本文共 780 字,大约阅读时间需要 2 分钟。
/** * 停止线程的方式 */ public class J14ThreadCease { public static void main(String[] args) throws InterruptedException { AA aa = new AA(); aa.setName("Test"); aa.start(); Thread.sleep(1000);
//1、stop() 停止线程,这个方法是已经过时了。 //stop() 是强制直接停止线程,会导致线程可能执行到一半或存储一半的数据到数据库时就给停止了。 // aa.stop();
//2、interrupt() 并不会立即终止线程,而是通知目标线程,有人希望停止这个线程,至于目标线程收到通知如何处理,则完全由目标线程自行决定。 //本质是设置一个停止标志,将终端标志设置为true,并根据线程状态判断是否抛出异常。 while (aa.isInterrupted()) { aa.interrupt(); }
//3、自行在线程中设置标志,来决定何时让线程运行完成,即while(flag)中的flag何时false,即终止状态 System.out.println("主线程运行完毕"); } } class AA extends Thread { @Override public void run() { for (int i = 0; i < 100; i++) { try { sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " " + i); } } } |
转载地址:http://rlmxi.baihongyu.com/