優雅的停止執行緒,後台守護執行緒,volatile

2021-08-21 22:07:41 字數 1063 閱讀 2717

停止執行緒有stop,destroy等。

這些方法已經被停用。因為這些方法會造成執行緒的死鎖。

推薦用下面這種

public class threadelegantstopcatch(interruptedexception e)

system.out.println(thread.currentthread().getname()+"執行 ,num="+num++);

}},"本執行緒").start();

trycatch(interruptedexception e)

flag=false;

}}

主要思想就是通過邏輯來使執行緒提前停止

就是當被守護執行緒進行則守護執行緒進行。被守護執行緒執行緒結束,守護執行緒就結束。守護執行緒執行時間<=被守護執行緒。

public class threaddaemoncatch(interruptedexception e)

}},"被守護執行緒").start();

thread deamonthread = new thread(()->catch(interruptedexception e)

}},"守護執行緒").start();

deamonthread.setdeamon(true);

deamonthread.start();

}}

原本程式操作的是乙個暫存器中的資料,操作完後把暫存器的值再賦給原本的變數。

但是用了volatile定義變數後,程式就是直接操作變數。

如果乙個執行緒在改變了主存中的值,但是另乙個還在改變暫存器中的值,那麼就會造成資料不同步。

class mythread16 implements runnable catch(interruptedexception e)

system.out.println(thread.currentthread().getname()+"賣票結果,ticket="+ticket--);}}

}public class threadvolatile

}

後台執行緒 守護執行緒

有一種執行緒,它是在後台執行的,它的任務是為其他的執行緒提供服務,這種執行緒被稱為 後台執行緒 daemon thread 又稱為 守護執行緒 典型的後台執行緒是定時器 timer 執行緒,他負責將固定的時間間隔傳送給其他的執行緒。後台執行緒經常用於任務結束時的善後處理。另外,後台執行緒的優先順序要...

優雅的停止執行緒

thread類的start 方法啟動多執行緒,thread原本也有提供有停止方法stop 但從1.2開始已經廢除了,因為這種方法可能造成執行緒的死鎖,現在實現執行緒的停止需要通過一種柔和的方式進行。範例 實現執行緒柔和的停止 package multithreading public class s...

後台守護執行緒

package duoxian public class threaddemo catch interruptedexception e system.out.println thread.currentthread getname 正在執行 x i 使用者執行緒 thread deamonthre...