- 相關(guān)推薦
Java線程同步的優(yōu)先級(jí)是什么
Java線程同步在不斷的學(xué)習(xí)中已經(jīng)形成了一種套路。下面是小編為大家搜索整理的Java線程同步的優(yōu)先級(jí)是什么,希望大家能有所收獲,更多精彩內(nèi)容請(qǐng)及時(shí)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
Java線程同步在使用的時(shí)候需要我們主要很多的事情,下面我們就來看看如何才能更好的使用這個(gè)語法呢?首先我們來看看線程的四種狀態(tài),希望大家在這個(gè)之中最找到很多自己需要的。
1、新狀態(tài):
線程已被創(chuàng)建但尚未執(zhí)行(start() 尚未被調(diào)用)。
2、可執(zhí)行狀態(tài):
線程可以執(zhí)行,雖然不一定正在執(zhí)行。CPU 時(shí)間隨時(shí)可能被分配給該線程,從而使得它執(zhí)行。
3、阻塞狀態(tài):
線程不會(huì)被分配 CPU 時(shí)間,無法執(zhí)行;可能阻塞于I/O,或者阻塞于同步鎖。
4、死亡狀態(tài):
正常情況下run() 返回使得線程死亡。調(diào)用 stop()或 destroy() 亦有同樣效果,但是不被推薦,前者會(huì)產(chǎn)生異常,后者是強(qiáng)制終止,不會(huì)釋放鎖。
Java線程同步的優(yōu)先級(jí)
線程的優(yōu)先級(jí)代表該線程的重要程度,當(dāng)有多個(gè)線程同時(shí)處于可執(zhí)行狀態(tài)并等待獲得 CPU 時(shí)間時(shí),線程調(diào)度系統(tǒng)根據(jù)各個(gè)線程的優(yōu)先級(jí)來決定給誰分配 CPU 時(shí)間,優(yōu)先級(jí)高的線程有更大的機(jī)會(huì)獲得 CPU 時(shí)間,優(yōu)先級(jí)低的線程也不是沒有機(jī)會(huì),只是機(jī)會(huì)要小一些罷了。
你可以調(diào)用 Thread 類的方法 getPriority() 和 setPriority()來存取線程的優(yōu)先級(jí),線程的優(yōu)先級(jí)界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之間,缺省是5(NORM_PRIORITY)。
Java線程同步
由于同一進(jìn)程的多個(gè)線程共享同一片存儲(chǔ)空間,在帶來方便的同時(shí),也帶來了訪問沖突這個(gè)嚴(yán)重的問題。Java語言提供了專門機(jī)制以解決這種沖突,有效避免了同一個(gè)數(shù)據(jù)對(duì)象被多個(gè)線程同時(shí)訪問。
我們只需針對(duì)方法提出一套機(jī)制,這套機(jī)制就是 synchronized 關(guān)鍵字,它包括兩種用法:synchronized 方法和 synchronized 塊。
synchronized 方法:通過在方法聲明中加入synchronized關(guān)鍵字來聲明 synchronized 方法。synchronized 方法控制對(duì)類成員變量的訪問:每個(gè)類實(shí)例對(duì)應(yīng)一把鎖,每個(gè) synchronized 方法都必須獲得調(diào)用該方法的類實(shí)例的鎖方能執(zhí)行,否則所屬線程阻塞,方法一旦執(zhí)行,就獨(dú)占該鎖,直到從該方法返回時(shí)才將鎖釋放,此后被阻塞的線程方能獲得該鎖,重新進(jìn)入可執(zhí)行狀態(tài)。
這種機(jī)制確保了同一時(shí)刻對(duì)于每一個(gè)類實(shí)例,其所有聲明為 synchronized 的成員函數(shù)中至多只有一個(gè)處于可執(zhí)行狀態(tài)(因?yàn)橹炼嘀挥幸粋(gè)能夠獲得該類實(shí)例對(duì)應(yīng)的鎖),從而有效避免了類成員變量的訪問沖突(只要所有可能訪問類成員變量的方法均被聲明為 synchronized)。
在 Java線程同步中,不光是類實(shí)例,每一個(gè)類也對(duì)應(yīng)一把鎖,這樣我們也可將類的靜態(tài)成員函數(shù)聲明為 synchronized,以控制其對(duì)類的靜態(tài)成員變量的訪問。
【Java線程同步的優(yōu)先級(jí)是什么】相關(guān)文章:
Java線程同步的方法05-27
java多線程的同步和異步09-05
Java 如何進(jìn)行線程同步05-19
java主線程是什么05-20
關(guān)于java實(shí)現(xiàn)線程同步的方式有哪些09-25
java線程池框架是什么09-03