方法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
}}
解決衝突1:加鎖synchronized關鍵字可以修飾函式或**段
執行同步物件之前必須搶到物件鎖,執行完後釋放鎖
解決衝突2:資料複製
乙個執行緒持有物件鎖才能呼叫物件的wait函式//synchronized可能會引起死鎖
//synchronized(lock)可以定義多個鎖並且傳進去。
private lock1 = new
byte[0];
sleep()釋放cpu不會釋放物件鎖;//執行wait函式時,執行緒就如同死掉一樣。沒有辦法繼續往下執行
try
catch(e)
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...