1、wait(),notify(),notifyall() 。object物件的方法,
因為每個對像都有鎖,鎖是每個對像的基礎,當然操作鎖的方法也是最基礎了。
每個物件都有乙個鎖,只有持有鎖物件後才能進行wait與notify操作
obj.wait()
synchronized (obj)
dosomething();
obj.notify()
obj.notifyall()
喚醒等待該物件鎖的所有執行緒,其他同notify()方法。
注意:wait與notify的呼叫物件應該為同乙個(多執行緒共享物件)
2、sleep(),yield(),thread類的方法。join(),thread物件方法
thread.sleep(long tomeout)
thread.yield()
t.join()
3、thread.start()與thread.run()的區別
呼叫start()將會開啟乙個新執行緒,達到多線目的。
此時執行緒處於就緒狀態,並立刻執行,被cpu排程後才會執行run方法中的**。此方法不能被重複呼叫,重複呼叫會拋異常。
run()只是普通方法的呼叫,不會開啟新執行緒,由當前執行緒順序執行run()方法中的**,不能達到多執行緒目的。此方法可被重複呼叫。
4、sleep()與wait()區別
sleep()是thread上的方法,wait()是object方法
sleep()不會釋放鎖,wait()會釋放鎖,使其他執行緒可以進入同步**塊或同步方法
wait()只能在同步塊中使用,wait()後需要用notify()和notifyall()方法,sleep()無該限制
參考:
Java併發 多執行緒
執行緒狀態 每個執行緒可以看做不同的任務,cpu需要分配每個執行緒不同的使用時間,cpu需要不同的執行緒之間來回切換,造成執行緒可能存在的不同狀態。新建執行緒 public class thread1 extends thread public class runnable1 implements ...
多執行緒併發程式設計
docker 可謂是開啟了容器化技術的新時代,現在無論大中小公司基本上都對容器化技術有不同程度的嘗試,或是已經進行了大量容器化的改造。伴隨著 kubernetes 和 cloud native 等技術和理念的普及,也大大增加了業務容器化需求。而這一切的推進,不可避免的技術之一便是構建容器映象。在本場...
多執行緒併發程式設計
程序是乙個執行的程式,程序裡面有多個執行緒,執行緒是程序中負責執行的程式的一執行單元,執行緒本身是依靠程式進行執行的,執行緒是程式中乙個順序控制流。執行緒分為單執行緒和多執行緒。多執行緒能更好利用cpu資源。以前單程序的,時間片切換 多執行緒實現方式 繼承thread,實現runnable。exec...