JAVA 8 多執行緒

2021-08-21 08:48:17 字數 1195 閱讀 7705

方法1實現runnable介面

方法2實現thread介面

public

class

createthread

implements

runnable

}

匿名類

沒有建構函式

class a

public

static

void

main(string args)

a c=new k(){}//k是抽象的介面,呼叫object的建構函式

}}

new a(0)}.a();
class a

}}

同步互斥

synchronized關鍵字可以修飾函式或**段

執行同步物件之前必須搶到物件鎖,執行完後釋放鎖

解決衝突1:加鎖

解決衝突2:資料複製

//synchronized可能會引起死鎖

//synchronized(lock)可以定義多個鎖並且傳進去。

private lock1 = new

byte[0];

乙個執行緒持有物件鎖才能呼叫物件的wait函式

//執行wait函式時,執行緒就如同死掉一樣。沒有辦法繼續往下執行

try

catch(e)

sleep()釋放cpu不會釋放物件鎖;

wait();會釋放物件鎖:不占用cpu也不占用物件鎖

notify();

synchronized

public

char

pop()

catch(interruptedexception e)

}index--;

notifyall();

return data[index];

}

兩把物件鎖。進入鎖的順序應該是一致的。否則就會產生死鎖。

volatile

臨界變數。用來修飾變數。如果只有少量變數為臨界變數,則可以用volatile來形容。

java 8多執行緒同步鎖

同步 塊的鎖物件是任意物件 object obj demo d 這些都行同步方法 把同步關鍵字synchronized新增到方法上,那麼,同步方法的鎖物件是同步方法是靜態方法,那麼這個靜態同步方法的鎖物件是 類的位元組碼檔案物件public class sellticket implements r...

java8總結(未完)

1.lambda表示式與functional介面 lambda表示式 閉包 允許把函式作為乙個方法的引數 乙個lambda由逗號分隔的引數列表 符號與函式體表示 arrays.aslist a b c foreach e system.out.println e 引數e的型別是由編譯器推測出來的,同...

JAVA8 六種執行緒池介紹

1 newcachedthreadpool 建立乙個可快取執行緒池,如果執行緒池長度超過處理需要,可靈活 空閒執行緒,若無可 則新建執行緒。執行緒池為無限大,當執行第二個任務時第乙個任務已經完成,會復用執行第乙個任務的執行緒,而不用每次新建執行緒。可能導致記憶體溢位,一般使用newfixedthre...