java基礎複習 多執行緒

2021-06-18 04:18:13 字數 2649 閱讀 5266

第一節 兩種建立方法

1繼承thread類,並複寫run方法

2實現runnable介面,並複寫run方法

3兩種方式的特點和優缺點,以及應用。賣票程式中,使用1方法建立的執行緒,每建立乙個執行緒,都有100張票。而我們想要的多個執行緒共同操作這100張票,這時就要使用第二種方法。

第二節 執行緒的執行狀態

1被建立 start()——>執行

2執行3凍結 使用sleep(毫秒值) ,wait()方法放棄執行資格。

喚醒執行緒notify() ,notify()是繼承自object類中的方法。執行緒被喚醒後,進入了阻塞狀態

4阻塞狀態 一種臨時狀態,具備執行資格,但沒有執行權

5消亡 使用stop()方法;run方法執行完畢。

第三節 獲取執行緒物件以及名稱

每個執行緒都有自己預設的名稱。在建立執行緒時,可以通過string型別的引數傳入的方式或是使用setname()方法給執行緒自定義名稱。得到執行緒物件後,可以通過getname()獲取當前執行緒的名稱。

獲取執行緒物件。通過靜態的currentthread()方法可以獲取當前執行緒物件。

classticket implements runnnable。其中物件可以是任意的例項化物件。這個物件稱為鎖旗標,或監視器。只有持有鎖的執行緒可以在同步**塊中執行。執行緒離開同步**塊時將鎖釋放。

第二節   同步函式

同步**塊用來封裝**,函式也是用來封裝**。可以將同步的關鍵字synchronized用於修飾函式,例如public synchronized void(){}

第三節   鎖

同步函式的鎖匙this。靜態同步函式的鎖是class物件。即.class檔案

同步函式的鎖是this的驗證

class  ticket implements runnable

int ticket  = 100 ;

object obj = new object();

boolean flag = true ;

public void run()

if(flag)

while(true)

synchronized(obj)

if(ticket> 0)

trycatch(exceptione){}

system.out.println(thread.currentthread().getname()+"    -------"+ticket --);

//show();                     

else

while(true)

show();

public synchronized void show()

if(ticket > 0)

trycatch(exceptione){}

system.out.println(thread.currentthread().getname()+"    "+ticket --);

class ticketdemo

public static void main(string args)

ticket tic = new ticket();

thread thr1 = newthread(tic,"one");

thread thr2 = newthread(tic,"two");

thr1.start();

trycatch(exceptione){};

tic.flag = false;

thr2.start();

第四節 死鎖

同步中巢狀同步,而持有的鎖不同

餓汗式classsingle

public static single getinstance{

if(s == null){

synchronized(single.class){

if(s == null ){

s= new single();

return s ;

第一節 執行緒間通訊

其實就是多個執行緒在操作同乙個資源,但是操作的動作不同。

定義r.notify()   ;  r.wait();

第二節 解決安全問題

第三節 等待喚醒機制

第四節 **優化

第一節 停止執行緒

interrupt(),此方法會丟擲異常。

第二節 守護執行緒

第四節   join方法

a執行緒執行時,執行到了b執行緒呼叫join方法的語句,會釋放執行權,處於凍結狀態,

直至b執行緒執行結束,a才會執行。join方法,可以用來臨時加入執行緒執行。

方法得到執行權的執行緒執行完畢,。

第五節   優先順序&yield方法

優先順序代表搶執行權的頻率,所有執行緒包括主線程預設優先順序是5。優先順序可以從1~10。

static int max_priority

執行緒可以具有的最高優先順序。

static int min_priority

執行緒可以具有的最低優先順序。

static int norm_priority

分配給執行緒的預設優先順序。

更改執行緒的優先順序。void setpriority(intnewpriority)

static void yield()暫停當前正在執行的執行緒物件,並執行其他執行緒。稍微減緩執行緒執行的頻率

JAVA多執行緒基礎知識複習一

一.執行緒的基礎知識 1.什麼是程序 它是執行中的程式 2.什麼是執行緒 又稱輕量級程序,是程式的最小單元 3.建立執行緒的兩種方法 1 繼承thread類 public class demo1 class mythread extends thread 2 實現runable介面 public c...

Java基礎複習執行緒

執行緒 實現多執行緒的兩種方法 繼承thread類,重新run方法 thread a new mythread 子執行緒 thread.start 實現runnable介面,實現run方法。myrunnable my new myrunable 在這個myrunnable類中已經重寫了run方法 t...

Java基礎 多執行緒

多執行緒的概念,如何在程式中建立多執行緒 thread runnable 執行緒安全問題,執行緒的同步,執行緒之間的通訊 死鎖。一 建立執行緒和啟動執行緒。為什麼要覆蓋run方法 thread類用於描述執行緒。該類就定義了乙個功能。用於儲存執行緒要執行的 該儲存功能就是run方法。也就是說threa...