Java基礎-多線程(1)

一.多線程的實現(xiàn)方案:

1.繼承Thread類


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

二.線程的調(diào)度和優(yōu)先級問題:

1.線程的調(diào)度

A:分時調(diào)度

B:搶占式調(diào)度(Java采用的就是這種);

2.獲取和設置線程的優(yōu)先級

獲取對象的優(yōu)先級:

?public final int getPriority();

?設置對象的優(yōu)先級

public final void setPriority();

A:默認是5

B:范圍是1-10;

三.線程的控制:

A:線程休眠:Thread.sleep(long ?millis);

B:線程加入:public ?final ?void ?join(); ?等待該線程終止再執(zhí)行其他的.

C:線程禮讓:public static void yield();暫停當前正在執(zhí)行的線程對象,并執(zhí)行其他線程.讓多個線程的執(zhí)行更和諧,但是不能保證一個線程執(zhí)行一次.

D:守護線程:public final void setDaemon(boolean on);將該線程標記為守護線程或用戶線程.當正在運行的線程都是守護線程的時候,Java虛擬機退出,該方法必須在啟動線程前調(diào)用.

E:線程終止:stop():這個方法已經(jīng)過時;現(xiàn)在用public void interrupt();中斷線程,把線程狀態(tài)終止,并且拋出一個InterruptedException.

四.出現(xiàn)線程安全問題的原因以及解決辦法:

1.原因:

A:是否有多線程環(huán)境.

B:是否有共享數(shù)據(jù).

C:是否有多條語句操作共享數(shù)據(jù).

2.解決辦法:

A:同步代碼塊

synchronized (同步鎖對象) {

? ? ? ? ? ? ? ?需要被同步的代碼;

}

這里的鎖對象可以是任意對象.

B:同步方法:

? ? ? ? ? ? 把同步關(guān)鍵字加在方法上.

a:非靜態(tài)方法

? ? ? ? ? ? ?這里的鎖對象是this.

b:靜態(tài)方法:

這里的鎖對象是類的字節(jié)碼文件對象.

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

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

  • Java多線程學習 [-] 一擴展javalangThread類 二實現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 3,107評論 1 18
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,638評論 18 399
  • 本文主要講了java中多線程的使用方法、線程同步、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應的一些線程函數(shù)用法、概述等。 首先講...
    李欣陽閱讀 2,594評論 1 15
  • 該文章轉(zhuǎn)自:http://blog.csdn.net/evankaka/article/details/44153...
    加來依藍閱讀 7,465評論 3 87
  • 先試試再說。
    自然綠色閱讀 67評論 0 0

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