Android 執行緒池的說明與使用

2021-07-24 15:53:56 字數 1770 閱讀 3383

blockingqueue的實現都是執行緒安全的,子類如下:

synchronousqueue、linkedblockingqueue、linkedblockingdeque、arrayblockingqueue、delayqueue、priorityblockingqueue。

synchronousqueue:

是無界的,是一種無緩衝的等待佇列。 

linkedblockingqueue:

linkedblockingqueue基於鍊錶,預設integer.max_value,可以指定大小。

arrayblockingqueue:

arrayblockingqueue基於陣列,必須指定大小。

executors類提供的四種執行緒池:

1、fixedthreadpool,定長線程池,核心執行緒與最大執行緒數一致,無空閒超時時間(表示核心執行緒一直存活),當核心執行緒都在使用時,新任務存入佇列等待。

定義:public static executorservice newfixedthreadpool(int nthreads)

使用:executorservice fixedthreadpool = executors.newfixedthreadpool(4);

fixedthreadpool.submit(new runnable()

});2、cachedthreadpool,核心執行緒為0,執行緒最大為integer.max_value(無限制),空閒超時時間60秒,有新任務時立刻執行,無任務時60秒後被**。

定義:public static executorservice newcachedthreadpool()

使用:executorservice cachedthreadpool = executors.newcachedthreadpool();

cachedthreadpool.submit(new runnable()

});3、scheduledthreadpool,執行緒最大為integer.max_value(無限制),無空閒超時時間(表示執行緒一直存活),可設定延時定時執行任務。

定義:public static scheduledexecutorservice newscheduledthreadpool(int corepoolsize)

public scheduledthreadpoolexecutor(int corepoolsize)

使用:scheduledexecutorservice scheduledthreadpool = executors.newscheduledthreadpool(4);

scheduledthreadpool.scheduleatfixedrate(new runnable()

}, delay, period, timeunit.seconds);

4、singlethreadexecutor,核心執行緒與最大執行緒為1,無空閒超時時間(表示唯一的核心執行緒一直存活),執行緒工作時,有新任務則加入佇列等待,用於順序執行各個任務。

public static executorservice newsinglethreadexecutor()

使用:executorservice singlethreadexecutor = executors.newsinglethreadexecutor();

singlethreadexecutor.submit(new runnable()

});

執行緒池ExecutorService 的使用

executes the given command at some time in the future.the command may execute in a new thread,in a pooled thread,or in the calling thread,at the discr...

Android執行緒池

executors jdk1.5之後的乙個新類,提供了一些靜態工廠,生成一些常用的執行緒池,threadpoolexecutor是executors類的底層實現 1.newsinglethreadexecutor 建立乙個單執行緒的執行緒池。這個執行緒池只有乙個執行緒在工作,也就是相當於單執行緒序列...

Android 執行緒池

threadpoolexecutor int corepoolsize,int maximumpoolsize,long keepalivetime,timeunit unit blockingqueueworkqueue,threadfactory threadfactory corepoolsi...