多線程

線程

為提高cpu的利用率以及解決實(shí)時(shí)性問(wèn)題,多線程油然而生?!?/p>

線程中優(yōu)先級(jí)高不代表一定能先執(zhí)行

實(shí)現(xiàn)多線程有兩種方式:

1.繼承Thread類

2.實(shí)現(xiàn)Runnable接口


繼承Therad的線程類不能繼承其他類;通過(guò)static修飾也可共享資源,但不能滿足大量數(shù)據(jù)的需求

實(shí)現(xiàn)Runnable接口的實(shí)現(xiàn)類還可以繼承其他類,可讓多個(gè)線程共享實(shí)現(xiàn)類的資源


多線程通過(guò)搶占cpu來(lái)提供利用率以及解決實(shí)時(shí)性問(wèn)題,也因此導(dǎo)致線程的運(yùn)行軌跡不確定

多線程的某個(gè)線程運(yùn)行可能會(huì)在任意位置因?yàn)閏pu時(shí)間片結(jié)束而導(dǎo)致被切換出去,當(dāng)再次搶占cpu也會(huì)在切換位置繼續(xù)執(zhí)行下去

多線程的線程是獨(dú)立運(yùn)行,互不干擾,可共享資源,但是很容易導(dǎo)致數(shù)據(jù)錯(cuò)亂(線程安全問(wèn)題)

解決線程的安全問(wèn)題也是線程同步的實(shí)現(xiàn),有兩種方式:

1.同步代碼塊

2.同步方法


線程的生命周期

新生狀態(tài):使用new關(guān)鍵字建立一個(gè)線程后,該線程對(duì)象就處于新生狀態(tài),調(diào)用start()方法可進(jìn)入就緒狀態(tài)

就緒狀態(tài):具備運(yùn)行條件,等待cpu的調(diào)度

運(yùn)行狀態(tài):執(zhí)行該線程的run方法中代碼,直到因某原因阻塞進(jìn)入阻塞狀態(tài)? 或者正常完成任務(wù)而進(jìn)入死亡狀態(tài)

阻塞狀態(tài):阻塞狀態(tài)下的線程不能進(jìn)入就緒狀態(tài),只有當(dāng)因某原因而進(jìn)入阻塞狀態(tài)的原因消除時(shí),才可進(jìn)入就緒狀態(tài)。

死亡狀態(tài):正常完成任務(wù)、線程被強(qiáng)制性終止或是線程拋出未捕獲的異常





同步代碼塊

synchronized?(mutex) {

??// .. .

}

mutex 稱為互斥鎖/同步鎖。對(duì)共享資源進(jìn)行加鎖實(shí)現(xiàn)同步。一般用共享資源作為同步鎖,也稱同步監(jiān)視器。

同步代碼塊中同步監(jiān)視器(mutex) 可以是任何對(duì)象


同步方法

private synchronized void xxx() {

? ? // .. .

??????????? }

把普通方法用synchronized 修飾,同步方法的同步監(jiān)視器是this。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文主要講了java中多線程的使用方法、線程同步、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應(yīng)的一些線程函數(shù)用法、概述等。 首先講...
    李欣陽(yáng)閱讀 2,594評(píng)論 1 15
  • Java多線程學(xué)習(xí) [-] 一擴(kuò)展javalangThread類 二實(shí)現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 3,107評(píng)論 1 18
  • 該文章轉(zhuǎn)自:http://blog.csdn.net/evankaka/article/details/44153...
    加來(lái)依藍(lán)閱讀 7,467評(píng)論 3 87
  • 寫在前面的話: 這篇博客是我從這里“轉(zhuǎn)載”的,為什么轉(zhuǎn)載兩個(gè)字加“”呢?因?yàn)檫@絕不是簡(jiǎn)單的復(fù)制粘貼,我花了五六個(gè)小...
    SmartSean閱讀 4,936評(píng)論 12 45
  • ??一個(gè)任務(wù)通常就是一個(gè)程序,每個(gè)運(yùn)行中的程序就是一個(gè)進(jìn)程。當(dāng)一個(gè)程序運(yùn)行時(shí),內(nèi)部可能包含了多個(gè)順序執(zhí)行流,每個(gè)順...
    OmaiMoon閱讀 1,803評(píng)論 0 12

友情鏈接更多精彩內(nèi)容