當前位置:才華齋>計算機>java語言>

Java執行緒同步的優先順序是什麼

java語言 閱讀(4.63K)

Java執行緒同步在不斷的學習中已經形成了一種套路。下面是小編為大家搜尋整理的Java執行緒同步的優先順序是什麼,希望大家能有所收穫,更多精彩內容請及時關注我們應屆畢業生考試網!

Java執行緒同步的優先順序是什麼

Java執行緒同步在使用的時候需要我們主要很多的事情,下面我們就來看看如何才能更好的使用這個語法呢?首先我們來看看執行緒的四種狀態,希望大家在這個之中最找到很多自己需要的。

  1、新狀態:

執行緒已被建立但尚未執行(start() 尚未被呼叫)。

  2、可執行狀態:

執行緒可以執行,雖然不一定正在執行。CPU 時間隨時可能被分配給該執行緒,從而使得它執行。

  3、阻塞狀態:

執行緒不會被分配 CPU 時間,無法執行;可能阻塞於I/O,或者阻塞於同步鎖。

  4、死亡狀態:

正常情況下run() 返回使得執行緒死亡。呼叫 stop()或 destroy() 亦有同樣效果,但是不被推薦,前者會產生異常,後者是強制終止,不會釋放鎖。

  Java執行緒同步的優先順序

執行緒的優先順序代表該執行緒的重要程度,當有多個執行緒同時處於可執行狀態並等待獲得 CPU 時間時,執行緒排程系統根據各個執行緒的優先順序來決定給誰分配 CPU 時間,優先順序高的執行緒有更大的機會獲得 CPU 時間,優先順序低的執行緒也不是沒有機會,只是機會要小一些罷了。

你可以呼叫 Thread 類的方法 getPriority() 和 setPriority()來存取執行緒的優先順序,執行緒的優先順序界於1(MIN_PRIORITY)和10(MAX_PRIORITY)之間,預設是5(NORM_PRIORITY)。

  Java執行緒同步

由於同一程序的多個執行緒共享同一片儲存空間,在帶來方便的同時,也帶來了訪問衝突這個嚴重的.問題。Java語言提供了專門機制以解決這種衝突,有效避免了同一個資料物件被多個執行緒同時訪問。

我們只需針對方法提出一套機制,這套機制就是 synchronized 關鍵字,它包括兩種用法:synchronized 方法和 synchronized 塊。

synchronized 方法:通過在方法宣告中加入synchronized關鍵字來宣告 synchronized 方法。synchronized 方法控制對類成員變數的訪問:每個類例項對應一把鎖,每個 synchronized 方法都必須獲得呼叫該方法的類例項的鎖方能執行,否則所屬執行緒阻塞,方法一旦執行,就獨佔該鎖,直到從該方法返回時才將鎖釋放,此後被阻塞的執行緒方能獲得該鎖,重新進入可執行狀態。

這種機制確保了同一時刻對於每一個類例項,其所有宣告為 synchronized 的成員函式中至多隻有一個處於可執行狀態(因為至多隻有一個能夠獲得該類例項對應的鎖),從而有效避免了類成員變數的訪問衝突(只要所有可能訪問類成員變數的方法均被宣告為 synchronized)。

在 Java執行緒同步中,不光是類例項,每一個類也對應一把鎖,這樣我們也可將類的靜態成員函式宣告為 synchronized,以控制其對類的靜態成員變數的訪問。