Thread

線程機(jī)制理解
開(kāi)啟線程: Thread thread = new Thread(Runnable).start();
thread.stop()方法是直接停止線程,這個(gè)方法已被啟用,由于線程是開(kāi)發(fā)者自己開(kāi)啟的,里面的內(nèi)容也是開(kāi)發(fā)者寫的,線程最好停止的方式是線程自己控制,現(xiàn)在外部線程控制另一個(gè)線程的死亡是不安全的,停止線程很有用,但是也很沒(méi)用.

thread.interrutp(),現(xiàn)在提供這種方式停止線程,其本質(zhì)是向目標(biāo)線程發(fā)起一個(gè)中斷標(biāo)記,目標(biāo)線程獲取這個(gè)中斷標(biāo)記可以自己控制(開(kāi)發(fā)者控制)是否關(guān)閉,這種 方式就是線程自己處理自己的關(guān)閉與否
中斷注意事項(xiàng),可以通過(guò)線程自己的interrupt方法判斷是否標(biāo)記了中斷,這個(gè)狀態(tài)是不變的,還有一個(gè)是Thread.interrupted()該方法可以用來(lái)判斷當(dāng)前線程是否中斷,但是他有一個(gè)處理,就是判斷完之后就把狀態(tài)給重置了,這個(gè)和thread對(duì)象的中斷有點(diǎn)區(qū)別需要注意,還有一點(diǎn)就是Thread.sleep()方法,調(diào)用該方法要處理異常try{}catch(InterruptedException),如果是sleep狀態(tài)的中斷的話會(huì)執(zhí)行異常處理并且把狀態(tài)重置,所有如果要停止線程要在異常處理return,否則線程停止不掉。

鎖的wait() notifyAll()理解

class TestWait{
   private String sharedString;
  private synchronized void initString(){
        sharedString = "huo";
        notifyAll();
  }
   private synchronized void printString(){
       while(sharedString == null){
            try {  wait(); }catch(InterruptedException e){ e.printStackTrace()}
        }
        System.out.println("String: " + sharedString);
  }
}

wait會(huì)釋放鎖,當(dāng)執(zhí)行打印的時(shí)候如果沒(méi)有初始化,執(zhí)行鎖的wait(),當(dāng)前持有鎖的線程就被掛起放到等待隊(duì)列,后面的線程也是如此都放入等待隊(duì)列,當(dāng)初始化線程執(zhí)行初始化后通知,所有的等待線程會(huì)被喚醒搶鎖 執(zhí)行打印代碼。注意:如果printString方法沒(méi)有執(zhí)行wait,就會(huì)出發(fā)死鎖,該線程持有鎖后就無(wú)限while,其他線程獲取不到鎖,initString也執(zhí)行不了。還有如果synchronized 去掉的話 上面的代碼會(huì)報(bào)錯(cuò),去掉后沒(méi)有鎖了,notifyAll、wait找不到所,IllegalMontiorStateException

thread.join() 在當(dāng)前線程執(zhí)行另一個(gè)線程的thread.join()方法,會(huì)暫停當(dāng)前線程,指定thread線程,當(dāng)線程執(zhí)行完成后在執(zhí)行當(dāng)前線程。

Thrad.yeald(),讓出當(dāng)前線程的時(shí)間,給其他線程執(zhí)行。多個(gè)線程競(jìng)爭(zhēng)執(zhí)行,讓出幾個(gè)線程呢,這個(gè)不確定,不同的操作系統(tǒng)不一樣。

ThreadLocal

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容