日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

并发基础(九) java线程的终止与中断

發(fā)布時間:2025/3/20 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 并发基础(九) java线程的终止与中断 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、簡單了解一下:為何不贊成使用 Thread.stop、Thread.suspend 和 Thread.resume?

??suspend 、resume、stop方法分別完成了線程的暫停、恢復(fù)、終止的工作。不建議使用原因:是因為這三個方法帶來的副作用,如suspend( )方法,調(diào)用后,線程就會一直占用資源睡眠,直到調(diào)用resume( )恢復(fù)后,才可以運(yùn)行。這樣很容易引發(fā)死鎖。同樣,stop( )方法在終結(jié)一個線程時不會保證線程的資源正常釋放,因此會導(dǎo)致程序可能工作在不確定的狀態(tài)下。
??線程的暫停、恢復(fù)操作可以用 等待/通知 機(jī)制來替代。但線程的終止就要用戶去實(shí)現(xiàn)了。

詳細(xì)可參考:http://bjzhkuang.iteye.com/blog/1748396

2、如何優(yōu)雅安全地終止線程

??終止一個線程 本質(zhì)上就是線程間的通信交互的過程。因此,線程間的通信方式:共享變量、流、中斷都可以用來實(shí)現(xiàn)終止線程的機(jī)制。最常用的方式便是“中斷”;
下面的例子是:除了中斷,還可利用boolean變量來控制是否需要終止線程;

public class ThreadTest{ public static void main(String[] args) throws InterruptedException {MyTask taskOne = new MyTask();Thread threadOne = new Thread(taskOne,"threadOne");threadOne.start();TimeUnit.MILLISECONDS.sleep(500);threadOne.interrupt();MyTask taskTwo = new MyTask();Thread threadTwo = new Thread(taskTwo,"threadTwo");threadTwo.start();TimeUnit.MILLISECONDS.sleep(500);taskTwo.cancel(); }private static class MyTask implements Runnable{//要加上volatile 修飾符,保證內(nèi)存的可見性,及時更新變量值private volatile boolean on = true; private long i;@Overridepublic void run() {//調(diào)用cancel、或者中斷都可以終止線程while(on && !Thread.currentThread().isInterrupted()){i++;}System.out.println("線程"+Thread.currentThread().getName()+" Count i = "+i);}public void cancel(){on = false;} } }

運(yùn)行結(jié)果:

線程threadOne Count i = 239418320
線程threadTwo Count i = 235374425

出處:http://www.cnblogs.com/jinggod/p/8486134.html

總結(jié)

以上是生活随笔為你收集整理的并发基础(九) java线程的终止与中断的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。