91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java線程的生命周期是什么

發布時間:2022-01-04 16:14:43 來源:億速云 閱讀:143 作者:iii 欄目:大數據

本篇內容介紹了“Java線程的生命周期是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Java線程的生命周期是什么

Java的線程生命周期有六種狀態:

  1. New(初始化狀態)

  2. Runnable(可運行/運行狀態)

  3. Blocked(阻塞狀態)

  4. Waiting(無時間限制的等待狀態)

  5. Timed_Waiting(有時間限制的等待狀態)

  6. Terminated(終止狀態)

1.New(初始化狀態):指的是在高級語言,比如Java。在Java層面的線程被創建了,而在操作系統中的線程其實是還沒被創建的,所以這個時候是不可能分配CPU執行這個線程的!所以這個狀態是高級語言獨有的,操作系統的線程沒這個狀態。我們New了一個線程,那時候它就是這個狀態。

2.Runnable(可運行/運行狀態):這個狀態下是可以分配CPU執行的,在New狀態時候我們調用start()方法后線程就處于這個狀態。

3.Blocked(阻塞狀態):這個狀態下是不能分配CPU執行的,只有一種情況會導致線程阻塞,就是synchronized!我們知道被synchronized修飾的方法或者代碼塊同一時刻只能有一個線程執行,而其他競爭鎖的線程就從Runnable到了Blocked狀態!當某個線程競爭到鎖了它就變成了Runnable狀態。

注意并發包中的Lock,是會讓線程屬于等待狀態而不是阻塞,只有synchronized是阻塞。(感覺是歷史遺留問題,沒必要多一個阻塞狀態和等待沒差啊)

4.Waiting(無時間限制的等待狀態):這個狀態下也是不能分配CPU執行的。有三種情況會使得Runnable狀態到waiting狀態

1.調用無參的Object.wait()方法。等到notifyAll()或者notify()喚醒就會回到Runnable狀態。

2.調用無參的Thread.join()方法。也就是比如你在主線程里面建立了一個線程A,調用A.join(),那么你的主線程是得等A執行完了才會繼續執行,這是你的主線程就是等待狀態。

3.調用LockSupport.park()方法。LockSupport是Java6引入的一個工具類Java并發包中的鎖都是基于它實現的,再調用LocakSupport.unpark(Thread thread),就會回到Runnable狀態。

5.Timed_Waiting(有時間限制的等待狀態):其實這個狀態和Waiting就是有沒有超時時間的差別,這個狀態下也是不能分配CPU執行的。有五種情況會使得Runnable狀態到waiting狀態。

  1. Object.wait(long timeout)。

  2. Thread.join(long millis)。

  3. Thread.sleep(long millis)。注意Thread.sleep(long millis, int nanos) 內部調用的其實也是Thread.sleep(long millis)。

  4. LockSupport.parkNanos(Object blocked,long deadline)。

  5. LockSupport.parkUntil(long deadline)。

6.Terminated(終止狀態):在我們的線程正常run結束之后或者run一半異常了就是終止狀態!

注意有個方法Thread.stop()是讓線程終止的,但是這個方法已經被廢棄了,不推薦使用,因為比如你這個線程得到了鎖,你stop了之后這個鎖也隨著沒了,其它線程就都拿不到這個鎖了!這不玩完了么!所以推薦使用interrupt()方法。

interrupt()會使得線程Waiting和Timed_Waiting狀態的線程拋出 interruptedException異常,使得Runnabled狀態的線程如果是在I/O操作會拋出其它異常。

如果Runnabled狀態的線程沒有阻塞在I/O狀態的話,那只能主動檢測自己是不是被中斷了,使用isInterrupted()。

“Java線程的生命周期是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海林市| 兰溪市| 武安市| 平罗县| 抚松县| 阳江市| 滨海县| 高邑县| 宜良县| 黄山市| 遵义市| 文水县| 淮滨县| 长海县| 宜丰县| 昭通市| 临汾市| 邵阳县| 惠州市| 锦屏县| 荃湾区| 扎兰屯市| 徐闻县| 中西区| 肃南| 徐汇区| 集安市| 天水市| 贡觉县| 九江县| 永平县| 罗山县| 宁蒗| 攀枝花市| 电白县| 左云县| 德格县| 淮阳县| 南宫市| 泰顺县| 灵川县|