多執行緒 Java併發程式設計中的各方法理解

2021-08-20 02:25:29 字數 1082 閱讀 6389

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...