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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java线程暂停_Java之线程停止

發(fā)布時間:2024/8/1 java 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java线程暂停_Java之线程停止 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

public void run() {

while(true){

someWork();

if(finished){

break;

}

try {

Thread.sleep(10000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

我們可以在while死循環(huán)內(nèi),每次循環(huán)時,察看外部條件,看看是否需要關(guān)閉當前線程。如果是,就break,跳出死循環(huán),或者是拋出異常,跳出死循環(huán),結(jié)束線程。

有些執(zhí)行伺服任務(wù)的線程,在while(true)這樣的死循環(huán)內(nèi)部,是一個阻塞中的方法。此時,就不能采用第二種方法了。因為,當該方法沒有返回時,該線程一直處于阻塞當中,根本無法執(zhí)行其他語句。

此時,就需要調(diào)用該線程的interrupt方法,產(chǎn)生一個InterruptedException運行時異常,是阻塞中的那個方法拋出這個異常,從而讓我們有機會結(jié)束這個線程的執(zhí)行。

這里說一種特殊情況,有些情況可能你需要一下子停止整個系統(tǒng)的所有線程,這樣子上面的方法就不是那么高效,思路也差不多。例如下面的Thread1、Thread2。

public class Thread1 extends Thread {

@Override

public void run() {

while(true) {

try {

doSomeWork();

if (finished) {

break;

}

//wait for some resource

} catch (InterruptedException e) {

// ...

break;

}

}

}

}

public class Thread2 extends Thread {

@Override

public void run() {

while(true) {

try {

doSomeWork();

if (finished) {

break;

}

//wait for some resource

} catch (InterruptedException e) {

// ...

break;

}

}

}

}

顯然,通過上面那兩種方法不能一下子停止這些線程,因為我們不能做到這些線程能同時滿足條件,此外這些線程也不可能一塊堵塞。這里我們通過改變whlie條件來解決這個問題,在我們的Thread1、Thread2上面增加一個父類AbstractThread,例:

public abstract class AbstractThread extends Thread {

protected AtomicBoolean isRunning = new AtomicBoolean(true);

public void stopRunning() {

isRunning.set(false);

}

}

然后使Thread1、Thread2繼承AbstractThread,然后修改while循環(huán)為如下:

while(isRunning) {

...

}

在停止線程時,調(diào)用每個線程的stopRunning方法,如果存在堵塞的情況,在輔助調(diào)用該線程的interrupt方法。

分享到:

2009-08-16 22:54

瀏覽 15495

評論

4 樓

Nabulio

2016-08-16

?

3 樓

像胡楊樹一樣活著

2013-05-03

貌似我的水平很低,

沒懂。

2 樓

gauzeehom

2010-08-11

看過了

1 樓

zouxiyao

2010-07-08

很有用的東西

總結(jié)

以上是生活随笔為你收集整理的java线程暂停_Java之线程停止的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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