多语言展示
当前在线:1338今日阅读:23今日分享:31

星爷的《大话西游》线程如何中断

话说星爷的《大话西游》巧妙运用这线程中断手法回到500年以前
工具/原料

《大话西游之大圣娶亲》

方法/步骤
1

模拟至尊宝穿越白晶晶时间线程  没有中断,代码如下: while(!Thread.interrupted()) { System.out.println('我要救救晶晶'+i); i++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }

2

第二步正常的时间线程public class ThreadDemo4 { public static void main(String args[]){ 至尊宝穿越白晶晶时间线程  穿越第n次=new  至尊宝穿越白晶晶时间线程(); Thread thread =new Thread(穿越第n次); thread.start(); for (int i = 0; i < 8; i++) { System.out.println('至尊宝当前时间线程'+Thread.currentThread().getName());try { Thread.sleep(1000); } catch (InterruptedException e) {e.printStackTrace(); } } }}

3

第三步至尊宝穿越线程被中断,进入五百年以前public class ThreadDemo4 { public static void main(String args[]){ 至尊宝穿越白晶晶时间线程  穿越第n次=new  至尊宝穿越白晶晶时间线程(); Thread thread =new Thread(穿越第n次); thread.start(); for (int i = 0; i < 8; i++) { System.out.println('至尊宝当前时间线程'+Thread.currentThread().getName()); if(i==5){ thread.interrupt();//至尊宝穿越到白晶晶时间被中断 } try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}

4

第四步由于至尊宝不可能同一时间救了白晶晶,又没有救白晶晶,因而中断会中断不了,所以必须加上Thread.currentThread().interrupt();代码如下:class 至尊宝穿越白晶晶时间线程  implements Runnable { @Override public void run() { // TODO Auto-generated method stub int i=0; //至尊宝穿越白晶晶时间线程  没有中断 while(!Thread.interrupted()) { System.out.println('我要救救晶晶'+i); i++; try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); Thread.currentThread().interrupt();//至尊宝穿越白晶晶时间线程 被中断 } } } }输出结果如下:至尊宝回到500以前main我要救救晶晶0至尊宝回到500以前main我要救救晶晶1至尊宝回到500以前main我要救救晶晶2我要救救晶晶3至尊宝回到500以前main我要救救晶晶4至尊宝回到500以前main至尊宝回到500以前main我要救救晶晶5java.lang.InterruptedException: sleep interrupted at java.lang.Thread.sleep(Native Method) at contronl.至尊宝穿越白晶晶时间线程.run(ThreadDemo4.java:35) at java.lang.Thread.run(Thread.java:619)至尊宝回到500以前main至尊宝回到500以前main

推荐信息