Java多執行緒

2021-09-02 16:18:26 字數 1184 閱讀 3634

執行緒生命週期

ø新建狀態:使用new建立的執行緒物件,和其他物件一樣,僅僅在堆中分配了記憶體;

ø就緒狀態(runnable):執行了start方法的執行緒;

ø執行狀態:被os選中了,分配了cpu執行時間;

ø死亡狀態:run()方法結束,或者main()方法結束,或者異常退出執行緒處於死亡狀態

ø阻塞狀態:執行緒同步需要,分為等待阻塞、同步阻塞、其他阻塞

n獲得了物件鎖,然後執行該物件的wait()方法,執行緒進入該物件的等待池中

n遇到sysnchronized關鍵字,或者被其他執行緒喚醒(o.notify())進入物件的鎖池中

n其他阻塞狀態,執行了sleep()方法或者t2.join()方法

注意:其實jvm實現的時候,對阻塞狀態是設定了好幾個佇列的,不同的阻塞情況進入不同的佇列,就緒狀態也有乙個佇列,滿足要求的進入就緒佇列,每次從就緒佇列取出乙個執行,當然此時還有自旋鎖可能爭搶執行權,因此是不公平鎖。

java多執行緒

在網上看到很有意思的問題,摘下來好好看下 在面試的時候被問了乙個多執行緒的問題 回來仔細思考了一下,多執行緒是否真的能提高了效率?我對多執行緒的理解就是 比如挖乙個隧道,有2種開工方法 1 只在山的一頭挖,直至挖到山的另一頭,從而打通隧道,這可以看成是單執行緒 2 在山的兩頭挖,同時開工,最後在山的...

Java 多執行緒

1。thread類和runnable介面 2。主線程 用thread的static thread currentthread 方法獲得 3。通過實現runnable介面建立執行緒 實現runnable介面的run方法。新執行緒在run 方法返回時結束。注意用這種方法建立程序時,在實現runnable...

JAVA 多執行緒

為hashmap的不正確使用所導致。hashmap在多執行緒環境下使用不安全。使用靜態hashmap作為聯絡人資料快取,key為手機號碼.private static maplxrdata new hashmap 多執行緒環境下不同步hashmap可能導致如下問題 1 多執行緒put操作後可能導致g...