最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

線程同步

2022-07-28 00:06 作者:劍離我離  | 我要投稿

自定義一個異常類

多線程

一個線程對應(yīng)一個棧和程序計數(shù)器;一個進(jìn)程對應(yīng)一個方法區(qū)和堆。

項目三

  • 代碼復(fù)用, 當(dāng)有復(fù)用的部分或是可以抽取出來為一個功能而模塊化的時候,要抽取出來,提高可讀性

  • 使用枚舉代替一些數(shù)字,這樣可以方便閱讀,同時如果更改數(shù)字的時候,不需要更改代碼的其他位置。

  • switch中直接使用枚舉的變量名;導(dǎo)包時使用static可省略類名(工具、枚舉類);

  • 重寫toString的時候,如果直接使用super會造成不一定調(diào)用直接父類的情況,可以另建一個方法,來代替super()的使用。同時和這個方法也是public/繼承下來的,可以直接調(diào)用

  • 數(shù)組判空,需要null以及l(fā)ength==0,看具體的情況

創(chuàng)建

方式一:繼承于Thread的類

  1. 創(chuàng)建繼承于Thread的子類

  2. 重寫Thread類的run() ;

  3. 創(chuàng)建Thread類的子類的對象

  4. 通過此對象調(diào)用start() ;兩個作用:1.啟動當(dāng)前線程 ; 2. 調(diào)用當(dāng)前線程的run() :

  • 不能通過直接調(diào)用run() 方法的方式啟動線程

  • 要創(chuàng)建兩個線程,必須要有兩個對象,而不能是一個對象start() 兩次;

yiled() : 釋放當(dāng)前CPU的執(zhí)行權(quán)

join() ; 在線程a中調(diào)用線程b的join(),此時線程a進(jìn)入阻塞狀態(tài),直到線程b完全執(zhí)行完以后,線程a才結(jié)束阻塞狀態(tài)

線程的優(yōu)先級

setPriority(int p) ;

getPriority() ;

  • MAX : 10

  • MIN : 1

  • NORM :5

方式二:

實現(xiàn)Runnable

  1. 創(chuàng)建一個實現(xiàn)了Runnable 接口的類

  2. 實現(xiàn)類去實現(xiàn)Runnable中的抽象方法 : run()

  3. 創(chuàng)建實現(xiàn)類的對象

  4. 將此對象作為參數(shù)傳遞到Thread類的構(gòu)造器中,創(chuàng)建Thread類的對象

  5. 通過Thread類的對象調(diào)用start();

兩種創(chuàng)建方式的對比:

優(yōu)先選擇 : 實現(xiàn)Runnable接口的方式

  1. 實現(xiàn)的方式?jīng)]有類的單繼承性的局限性。

  2. 實現(xiàn)的方式更適合來處理多個線程共享數(shù)據(jù)的情況

聯(lián)系:Thread 類 也實現(xiàn)了Runable 接口

相同點:兩種方式都需要重寫run()

線程的生命周期

線程安全

同步代碼塊

synchronized(同步監(jiān)視器) {

// 需要被同步的代碼

};

說明:操作共享數(shù)據(jù)的代碼,即為需要被同步的代碼

共享數(shù)據(jù):多個線程共同操作的變量。

同步監(jiān)視器:俗稱,鎖;任何一個類的對象,都可以充當(dāng)鎖;

  • 要求:多個線程必須要共同用一把鎖

補(bǔ)充:

  • 在實現(xiàn)Runnable接口創(chuàng)建多線程的方式中,我們可以考慮使用this來充當(dāng)同步監(jiān)視器

  • 在繼承Threaad類創(chuàng)建多線程的方式中,慎用this充當(dāng)同步監(jiān)視器,考慮使用當(dāng)前類充當(dāng)同步監(jiān)視器

同步方法

使用同步方法解決繼承Thread類的方式的線程安全問題

  1. 同步方法仍然涉及到同步監(jiān)視器,只是不需要我們顯式的聲明。

  2. 非靜態(tài)的同步方法,同步監(jiān)視器是 : this

靜態(tài)的同步方法,同步監(jiān)視器是 當(dāng)前類本身

Lock(鎖)

先創(chuàng)建一個 ReentrantLock

lock.lock() ;

lock.unlock() ;

synchronized 與 lock 的異同?
相同:二者都可以解決線程安全問題

不同:synchronized 機(jī)制在執(zhí)行完相應(yīng)的同步代碼以后,自動的釋放同步監(jiān)視器

Lock需要手動的啟動同步(lock()),同時結(jié)束同步也需要手動的實現(xiàn)(unlock())

優(yōu)先使用順序:Lock ?--> 同步代碼塊(已經(jīng)進(jìn)入了方法體,分配了相應(yīng)的資源) --> 同步方法(在方法體之外)


線程同步的評論 (共 條)

分享到微博請遵守國家法律
彝良县| 沂南县| 邢台县| 怀来县| 盐源县| 阳高县| 青州市| 永春县| 石林| 彭山县| 河西区| 华容县| 安义县| 马山县| 内黄县| 汶川县| 宁南县| 军事| 兰坪| 河西区| 孙吴县| 莆田市| 开封市| 澳门| 普兰店市| 福泉市| 正安县| 茂名市| 永和县| 南投市| 延边| 塔城市| 察隅县| 隆回县| 海淀区| 安龙县| 梁平县| 永春县| 额济纳旗| 额敏县| 正安县|