最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
邵东县| 长武县| 建平县| 东乡族自治县| 滕州市| 彭水| 成武县| 五原县| 遂溪县| 虞城县| 砚山县| 邓州市| 开鲁县| 嘉荫县| 遂川县| 旅游| 曲周县| 东港市| 泰州市| 武宁县| 常宁市| 胶南市| 阜康市| 韩城市| 雅江县| 溧阳市| 上虞市| 普兰县| 繁峙县| 邢台市| 萨嘎县| 会东县| 原平市| 紫阳县| 监利县| 晋江市| 东明县| 宜章县| 青阳县| 襄汾县| 泉州市|