執行緒池,執行緒安全

2022-08-22 20:03:13 字數 1020 閱讀 8968

執行緒池是容納多個執行緒的容器,其中執行緒可以反覆使用,避免反覆建立執行緒物件的操作,節省資源。

執行緒池的操作:用執行緒池工廠建立執行緒池物件:executorservice es=executors.newfixedthreadpool(5);

建立runnable的介面的實現類,然後例項化物件

使用es的submit方法傳入runnable實現類的例項化物件,即可執行該執行緒。

es.shutdown關閉執行緒池

實現callable介面的類可以實現返回值,用future《泛型》接收。

以下是兩個例項

例1:

public static void main(string args)

例2:

public static void main(string args) throws interruptedexception, executionexception

public class mycallable implements callable

}

在多執行緒呼叫同一資源時,可能由於cpu切換執行緒導致重複呼叫,或計算失誤的情況,這個時候,運用鎖來維護執行緒安全就成為很必要的事了。鎖具有三種形式,第一種是同步**塊,第二種是同步方法,第三種是lock()與unlock()。

同步**塊的格式:

synchronized (鎖物件)

鎖物件可以是任意物件

同步方法:

public synchronized void method()

它的底層鎖物件是this

同步巢狀同步,可能會出現死鎖現象,是由於多執行緒各自對方的鎖沒有歸還,導致執行緒無法「進門」。

通過實現lock介面來獲取鎖和釋放鎖,首先通過reentrantlock()創造物件,然後通過該物件呼叫lock()和unlock()來實現獲取鎖和釋放鎖,釋放鎖的方法一般放在finally中。

等待喚醒機制,通過物件.wait(),和物件.notify(),來終止當前物件在執行的執行緒和啟用當前等待的執行緒來實現執行緒交替進行的功能。

執行緒 執行緒池

執行緒池是一種多執行緒處理形式,處理過程中將任務新增到佇列,然後在建立執行緒後執行,主要實現 建立執行緒和管理執行緒,並且給執行緒分配任務。執行緒池中的執行緒是併發執行的。乙個比較簡單的執行緒池至少應包含執行緒池管理器 工作執行緒 任務列隊 任務介面等部分。其中執行緒池管理器的作用是建立 銷毀並管理...

執行緒 執行緒池

乙個簡單執行緒的建立和銷毀如下 與程序程序相比,執行緒是一種輕量級的工具,但是輕量並不代表沒有,它的建立和關閉依然需要花費時間,如果建立和銷毀的時間還大於執行緒本身完成的工作,那就會得不償失,甚至會造成out of memory。即使沒有,大量的執行緒 也會給gc帶來巨大的壓力。為了解決這樣的問題,...

程序 執行緒 執行緒安全 執行緒池的概念

1 程序 就是記憶體中的一段區域,這段區域中儲存了cpu執行的機器指令以及函式執行時的堆疊資訊,要想讓程序執行,就把main函式的第一條機器指令位址寫入pc暫存器,這樣程序就執行起來了。2 執行緒 main函式的特殊之處無非就在於是cpu執行的第乙個函式,除此之外再無特別之處,我們可以把pc暫存器指...