五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

線程該如何終止

2023-08-22 09:45 作者:J加樂  | 我要投稿

關(guān)于線程的終止,自然結(jié)束才是好

也許你會(huì)想使用thread.stop(),這個(gè)是直接強(qiáng)行終止線程,容易出現(xiàn)尿到一半叫你縮回去的事,自然不行。

為什么不用stop()方法:

一般來(lái)說,當(dāng)一個(gè)線程的方法體執(zhí)行完,這個(gè)方法就會(huì)結(jié)束了。我們一般不直接使用stop方法來(lái)終止線程,這可能會(huì)導(dǎo)致業(yè)務(wù)邏輯不完整或者破壞原子性的操作,一段代碼可能用來(lái)輸出某些重要的信息,在方法的執(zhí)行中使用stop方法終止線程,會(huì)使得輸出的信息破壞或者不完整;

假如:在原子操作比如重入鎖的使用時(shí),當(dāng)一個(gè)線程對(duì)象多次獲得鎖會(huì)使得計(jì)數(shù)加一,接下來(lái)需要以相同的次數(shù)釋放鎖直到計(jì)數(shù)減到0,別的線程才能獲得鎖資源,這種操作是原子性的,因?yàn)閷?duì)線程來(lái)說,他們拿到鎖和最終釋放鎖時(shí)計(jì)數(shù)都是為0的,因此這是一種原子性操作,假設(shè)在一個(gè)對(duì)象使用鎖的期間,使用stop方法強(qiáng)行終止線程,這會(huì)導(dǎo)致鎖的計(jì)數(shù)不為0,即破壞了原子性操作。綜合來(lái)說,我們?nèi)绻_地終止一個(gè)線程,不應(yīng)該使用stop()這種過時(shí)的方法。

比較常用的是以下兩種方法:
1、使用while循環(huán)輪詢標(biāo)志位,為false則退出循環(huán),結(jié)束方法體,終止線程。

2、使用interrupt()方法在線程阻塞狀態(tài)下結(jié)束線程。?

都是? 通知結(jié)束(根據(jù)狀態(tài)判斷是否進(jìn)入中斷流程,本質(zhì)都一樣)

Thread.currentThread().interrupt();????//?設(shè)置線程中斷狀態(tài),理解發(fā)出一個(gè)中斷信號(hào)

Thread.interrupted();?????// 返回中斷狀態(tài)信息,并將狀態(tài)恢復(fù)默認(rèn)值false

Thread.currentThread().isInterrupted();???? //檢測(cè)此線程是否中斷,返回中斷狀態(tài)信息,但不會(huì)清除中斷狀態(tài)

?

例:

public class MyThread extends Thread {

??? public void run() {

??????? try {

??????????? while (!Thread.currentThread().isInterrupted()) {

??????????????? // 執(zhí)行線程的任務(wù)

??????????????? // 模擬阻塞狀態(tài)

??????????????? Thread.sleep(1000);

??????????? }

??????? } catch (InterruptedException e) {

??????????? // 響應(yīng)中斷請(qǐng)求

??????????? System.out.println("線程被中斷");

??????? }

??? }

??? public static void main(String[] args) {

??????? MyThread thread = new MyThread();

??????? thread.start();

??????? // 等待一段時(shí)間后,調(diào)用 interrupt() 方法來(lái)中斷線程

??????? try {

??????????? Thread.sleep(5000);

????????? ? // 這里改變發(fā)出中斷信號(hào) 改變Thread.currentThread().isInterrupted()的結(jié)果

??????????? thread.interrupt();?

??????? } catch (InterruptedException e) {

??????????? e.printStackTrace();

??????? }

??? }

}


線程該如何終止的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
陵川县| 龙山县| 永平县| 泊头市| 英山县| 桑植县| 全南县| 乐至县| 岐山县| 科技| 分宜县| 达孜县| 象州县| 黄浦区| 白朗县| 鲁山县| 东乌| 栾川县| 钦州市| 长寿区| 绥化市| 万州区| 固始县| 屏东市| 汉中市| 忻州市| 浦江县| 甘泉县| 金溪县| 上饶县| 讷河市| 疏附县| 洛南县| 武宣县| 晋江市| 奎屯市| 曲松县| 金塔县| 绥化市| 静乐县| 朝阳市|