import java.awt.Frame; 
import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 
public class ww  

public static void main(String[] args) 

int i; 
final Mythread m=new Mythread(); 
Frame f=new Frame(); 
f.setSize(555, 555); f.setLayout(new GridLayout(13,5)); 
Button b=new Button("按钮"); 
Button c=new Button("按钮c"); f.add(b); 
f.add(c); 
f.setVisible(true); f.addWindowListener(new WindowAdapter() 
           { 
                public void windowClosing (WindowEvent e) 
                { 
                 m.start();                          
                        System.out.print("   end");                    
                     
                } 
           }); 


class Mythread extends Thread 

public void run() 

for(int i=0;i <12;i++) 
   { 
try 

Thread.sleep(332); 

       catch (InterruptedException e)  
        { 
                 e.printStackTrace(); 
            } 
        if(i==4) 
this.interrupt(); 
        
System.out.print(i); 
    } 


运行结果怎么会这样; 
   end012345java.lang.InterruptedException: sleep interrupted 
at java.lang.Thread.sleep(Native Method) 
at Mythread.run(ww.java:52) 
67891011 
当i=4的时候线程不是应该中断吗,

解决方案 »

  1.   

    import java.awt.Frame;  
    import javax.swing.*;  
    import java.awt.event.*;  
    import java.awt.*;  
    public class ww   
    {  
        public static void main(String[] args)  
           {  
                  int i;  
                  final Mythread m=new Mythread();  
                  Frame f=new Frame();  
                  f.setSize(555, 555);                f.setLayout(new GridLayout(13,5));  
                  Button b=new Button("按钮");  
                  Button c=new Button("按钮c");                f.add(b);  
                  f.add(c);  
                  f.setVisible(true);               f.addWindowListener(new WindowAdapter()  {  public void windowClosing (WindowEvent e)   {  m.start();  System.out.print("   end");}});  
          }  
    }  
    class Mythread extends Thread  
    {  

               public void run()  
                 { 
         try  
                       { 
                         for(int i=0;i  <12;i++)  
                             {  
                                Thread.sleep(332);  
                                if(i==4)  
                            this.interrupt();  
    System.out.print(i);  
        } 
     }catch (InterruptedException e)
        {  
                            e.printStackTrace();  
                            } 
     }
    }
      

  2.   

    结果是这样的:end01234java.lang.InterruptedException: sleep interrupted  
    at java.lang.Thread.sleep(Native Method)  
    at Mythread.run(ww.java:52)  
    567891011  
      

  3.   

    catch (InterruptedException e)   
    {  
           e.printStackTrace();  

    e.printStackTrace();  <-------那异常应该是这个的作用,如果有异常,打印出异常的信息