四種基本執行緒池

2021-10-02 09:00:16 字數 1186 閱讀 6663

##執行緒池的四種使用方式

**scheduleatfixedrate如果間隔時間大於任務的執行時間,任務不受執行時間的影響。如果間隔時間小於任務的執行時間,那麼任務執行結束之後,會立馬執行,至此間隔時間就會被打亂。

public static void method_02()  catch (interruptedexception e) 

long end = new date().gettime();

system.out.println("scheduleatfixedrate 執行花費時間=" + (end - start) / 1000 + "m");

system.out.println("***********************************===");

}}, 1, 5, timeunit.seconds);

}

*** schedulewithfixeddelay的間隔時間不會受任務執行時間長短的影響。

public static void method_03()  catch (interruptedexception e) 

long end = new date().gettime();

system.out.println("schedulewithfixeddelay執行花費時間=" + (end - start) / 1000 + "m");

+ dateformat.gettimeinstance().format(new date()));

system.out.println("***********************************===");

}}, 1, 2, timeunit.seconds);

}

newfixedthreadpool的執行緒數是可以進行控制的,因此我們可以通過控制最大執行緒來使我們的伺服器打到最大的使用率,同事又可以保證及時流量突然增大也不會占用伺服器過多的資源。

###

不足:這種方式雖然可以根據業務場景自動的擴充套件執行緒數來處理我們的業務,但是最多需要多少個執行緒同時處理缺是我們無法控制的;

優點:如果當第二個任務開始,第乙個任務已經執行結束,那麼第二個任務會復用第乙個任務建立的執行緒,並不會重新建立新的執行緒,提高了執行緒的復用率;

四種執行緒池

其他執行緒池 核心執行緒 執行緒池大小 佇列策略 newcachedthreadpool integer.max value synchronousqueue newfixedthreadpool 建立時可以設定引數 建立時可以設定引數 linkedblockingqueue newschedule...

四種執行緒池

threadpoolexecutor的引數 int coresize,核心執行緒 int maxsize,最大執行緒 long time,空閒執行緒超時時間,超時後銷毀 timeunit 空閒時間單位 blockingqueue taskqueue,存放任務的佇列,threadfactory thr...

android四種執行緒池

cachedthreadpool 可快取的執行緒池,如果執行緒池有空閒執行緒則復用空閒執行緒,如沒有空閒執行緒則建立執行緒 執行緒數沒有限制 執行緒執行超時則銷毀 引數部分看原始碼也很簡單 fixedthreadpool 有執行緒數量限制,如果執行緒數小於最大執行緒數,則無論有沒有空閒執行緒都會建立...