亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

武冈市| 成安县| 营山县| 奉化市| 桃江县| 临安市| 高淳县| 屏东市| 柳江县| 西城区| 尉犁县| 茌平县| 怀来县| 玉山县| 柯坪县| 凉城县| 错那县| 屯留县| 冷水江市| 张家口市| 衡东县| 新化县| 靖西县| 越西县| 莎车县| 邓州市| 射阳县| 亳州市| 古田县| 四平市| 乾安县| 读书| 临潭县| 蓬溪县| 衡阳县| 岳阳县| 旌德县| 微博| 张掖市| 江陵县| 和政县|