public class MyThread extends Thread { public void run(){ super.run(); for(int i=0; i<500000; i ){ System.out.println("i=" (i 1)); } } } public class Run { public static void main(String args[]){ Thread thread = new MyThread(); thread.start(); try { Thread.sleep(2000); thread.interrupt(); } catch (InterruptedException e) { e.printStackTrace(); } } }
... i=499994 i=499995 i=499996 i=499997 i=499998 i=499999 i=500000
public class MyThread extends Thread { public void run(){ super.run(); for(int i=0; i<500000; i ){ i ; // System.out.println("i=" (i 1)); } } } public class Run { public static void main(String args[]){ Thread thread = new MyThread(); thread.start(); try { Thread.sleep(2000); thread.interrupt(); System.out.println("stop 1??" thread.interrupted()); System.out.println("stop 2??" thread.interrupted()); } catch (InterruptedException e) { e.printStackTrace(); } } }
stop 1??false stop 2??false
System.out.println("stop 1??" thread.interrupted()); System.out.println("stop 2??" thread.interrupted());
public class Run2 { public static void main(String args[]){ Thread.currentThread().interrupt(); System.out.println("stop 1??" Thread.interrupted()); System.out.println("stop 2??" Thread.interrupted()); System.out.println("End"); } }
stop 1??true stop 2??false End
public class Run3 { public static void main(String args[]){ Thread thread = new MyThread(); thread.start(); thread.interrupt(); System.out.println("stop 1??" thread.isInterrupted()); System.out.println("stop 2??" thread.isInterrupted()); } }
stop 1??true stop 2??true
public class MyThread extends Thread { public void run(){ super.run(); for(int i=0; i<500000; i ){ if(this.interrupted()) { System.out.println("线程已经终止, for循环不再执行"); break; } System.out.println("i=" (i 1)); } } } public class Run { public static void main(String args[]){ Thread thread = new MyThread(); thread.start(); try { Thread.sleep(2000); thread.interrupt(); } catch (InterruptedException e) { e.printStackTrace(); } } }
... i=202053 i=202054 i=202055 i=202056
public class MyThread extends Thread { public void run(){ super.run(); for(int i=0; i<500000; i ){ if(this.interrupted()) { System.out.println("线程已经终止, for循环不再执行"); break; } System.out.println("i=" (i 1)); } System.out.println("这是for循环外面的语句,也会被执行"); } }
... i=180136 i=180137 i=180138 i=180139
public class MyThread extends Thread { public void run(){ super.run(); try { for(int i=0; i<500000; i ){ if(this.interrupted()) { System.out.println("线程已经终止, for循环不再执行"); throw new InterruptedException(); } System.out.println("i=" (i 1)); } System.out.println("这是for循环外面的语句,也会被执行"); } catch (InterruptedException e) { System.out.println("进入MyThread.java类中的catch了。。。"); e.printStackTrace(); } } }
... i=203798 i=203799 i=203800 线程已经终止, for循环不再执行 进入MyThread.java类中的catch了。。。 java.lang.InterruptedException at thread.MyThread.run(MyThread.java:13)
public class MyThread extends Thread { public void run(){ super.run(); try { System.out.println("线程开始。。。"); Thread.sleep(200000); System.out.println("线程结束。"); } catch (InterruptedException e) { System.out.println("在沉睡中被停止, 进入catch, 调用isInterrupted()方法的结果是:" this.isInterrupted()); e.printStackTrace(); } } }
线程开始。。。 在沉睡中被停止, 进入catch, 调用isInterrupted()方法的结果是:false java.lang.InterruptedException: sleep interrupted at java.lang.Thread.sleep(Native Method) at thread.MyThread.run(MyThread.java:12)
public class MyThread extends Thread { public void run(){ super.run(); try { System.out.println("线程开始。。。"); for(int i=0; i<10000; i ){ System.out.println("i=" i); } Thread.sleep(200000); System.out.println("线程结束。"); } catch (InterruptedException e) { System.out.println("先停止,再遇到sleep,进入catch异常"); e.printStackTrace(); } } } public class Run { public static void main(String args[]){ Thread thread = new MyThread(); thread.start(); thread.interrupt(); } }
i=9998 i=9999 先停止,再遇到sleep,进入catch异常 java.lang.InterruptedException: sleep interrupted at java.lang.Thread.sleep(Native Method) at thread.MyThread.run(MyThread.java:15)
public class MyThread extends Thread { private int i = 0; public void run(){ super.run(); try { while (true){ System.out.println("i=" i); i ; Thread.sleep(200); } } catch (InterruptedException e) { e.printStackTrace(); } } } public class Run { public static void main(String args[]) throws InterruptedException { Thread thread = new MyThread(); thread.start(); Thread.sleep(2000); thread.stop(); } }
i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 Process finished with exit code 0
public class MyThread extends Thread { private int i = 0; public void run(){ super.run(); try { this.stop(); } catch (ThreadDeath e) { System.out.println("进入异常catch"); e.printStackTrace(); } } } public class Run { public static void main(String args[]) throws InterruptedException { Thread thread = new MyThread(); thread.start(); } }
public class SynchronizedObject { private String name = "a"; private String password = "aa"; public synchronized void printString(String name, String password){ try { this.name = name; Thread.sleep(100000); this.password = password; } catch (InterruptedException e) { e.printStackTrace(); } } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } public class MyThread extends Thread { private SynchronizedObject synchronizedObject; public MyThread(SynchronizedObject synchronizedObject){ this.synchronizedObject = synchronizedObject; } public void run(){ synchronizedObject.printString("b", "bb"); } } public class Run { public static void main(String args[]) throws InterruptedException { SynchronizedObject synchronizedObject = new SynchronizedObject(); Thread thread = new MyThread(synchronizedObject); thread.start(); Thread.sleep(500); thread.stop(); System.out.println(synchronizedObject.getName() " " synchronizedObject.getPassword()); } }
b aa
public class MyThread extends Thread { public void run(){ while (true){ if(this.isInterrupted()){ System.out.println("线程被停止了!"); return; } System.out.println("Time: " System.currentTimeMillis()); } } } public class Run { public static void main(String args[]) throws InterruptedException { Thread thread = new MyThread(); thread.start(); Thread.sleep(2000); thread.interrupt(); } }
... Time: 1467072288503 Time: 1467072288503 Time: 1467072288503 线程被停止了!