1. 程式人生 > >java 多執行緒的一種實現方式

java 多執行緒的一種實現方式

  private ThreadPoolExecutor threadPoolExecutor;



  /**
     * 獲取執行緒池
     * @return
     */
    private ThreadPoolExecutor getThreadPoolExecutor(){
        if(threadPoolExecutor != null){
            return threadPoolExecutor;
        }
        threadPoolExecutor = new ThreadPoolExecutor(5,20,10, TimeUnit.SECONDS,new
ArrayBlockingQueue<Runnable>(2)); return threadPoolExecutor; } public static void main(String str){ getThreadPoolExecutor().execute(()->{ //要執行的方法,呼叫 runMethod(); });
}
public void runMethod(){ int a = 10; }

注意點:

1.執行緒的生命週期開銷非常高

2.消耗過多的CPU資源

如果可執行的執行緒數量多於可用處理器的數量,那麼有執行緒將會被閒置。大量空閒的執行緒會佔用許多記憶體,給垃圾回收器帶來壓力,而且大量的執行緒在競爭CPU資源時還將產生其他效能的開銷。

降低穩定性

3.JVM在可建立執行緒的數量上存在一個限制,這個限制值將隨著平臺的不同而不同,並且承受著多個因素制約,包括JVM的啟動引數、Thread建構函式中請求棧的大小,以及底層作業系統對執行緒的限制等。如果破壞了這些限制,那麼可能丟擲OutOfMemoryError異常。

4.執行緒過多時會報記憶體不足的情況,特別是訪問量很大時謹慎使用多執行緒,報錯的程式碼忘了 (如果任務過多處理不過來可以使用佇列來執行對應任務,減輕CPU壓力)