⑴ android什麼時候使用線程池
線程池的具體實現為ThreadPoolExeutor,其介面為Executor。
ThreadPoolExecutor提供了一系列的參數用於配置線程池。
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory) {
⑵ Android 對線程封裝了:AsyncTask, HandlerThread和線程池。 有知道這三個如何選擇嗎
AsyncTask性能不怎麼高,而且還有內存泄漏的隱患。之所以現在沒有刪掉這個類庫,是因為很多應用都是基於這個庫的,Google這邊一刪,別人軟體就崩了。
⑶ android java單線程線程池需要單例模式嗎
單例模式就是某個類在這個系統中只有一個實例,我個人覺得不管是在單線程,還是多線程都可以使用,不是說需不需要,是看實際的業務需不需要這個類的實例就只有一個,像安卓的Application就是單例的,希望能幫助到你,望採納。
⑷ android 線程池有什麼用
//在Android中實現線程池,首先需要實現一個線程工廠(ThreadFactory)的子類,具體實現方式如下所示(PriorityThreadFactory.Java):
import android.os.Process;
/**
* A thread factory that create threads with a given thread priority
* @author jony
* @version 1.0
*/
public class PriorityThreadFactory implements ThreadFactory{
private final String mName;
private final int mPriority;
private final AtomicInteger mNumber = new AtomicInteger();
public PriorityThreadFactory(String name, int priority) {
mName = name;// 線程池的名稱
mPriority = priority;//線程池的優先順序
}
@Override
public Thread newThread(Runnable r) {
return new Thread(r, mName +"-"+mNumber.getAndIncrement()){
@Override
public void run() {
// 設置線程的優先順序
Process.setThreadPriority(mPriority);
super.run();
}
};
}
}
//以上是創建線程池的一個工具類,接下來為大家介紹本篇文章的重點,線程池的實現方式,具體實現方式如下所示(MyThreadPool.java):
package com.tcl.actionbar;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
package com.tcl.actionbar;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executor;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.ThreadFactory;
// 線程池的實現方式
public class MyThreadPool {
private final static int POOL_SIZE = 4;// 線程池的大小最好設置成為CUP核數的2N
private final static int MAX_POOL_SIZE = 6;// 設置線程池的最大線程數
private final static int KEEP_ALIVE_TIME = 4;// 設置線程的存活時間
private final Executor mExecutor;
public MyThreadPool() {
// 創建線程池工廠
ThreadFactory factory = new PriorityThreadFactory("thread-pool", android.os.Process.THREAD_PRIORITY_BACKGROUND);
// 創建工作隊列
BlockingQueue<Runnable> workQueue = new LinkedBlockingDeque<Runnable>();
mExecutor = new ThreadPoolExecutor(POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS, workQueue, factory);
}
// 在線程池中執行線程
public void submit(Runnable command){
mExecutor.execute(command);
}
}
⑸ android 怎樣將線程池封裝到自己的網路請求底層
對非同步請求封裝 ,可用作基本項目框架來使用
1)封裝HttpClient
2)由於用到線程池,可以進行多任務網路請求操作
3)沒有網路的時候進行網路狀態檢查
4)對請求的數據根據URL進行緩存到本地sqlite資料庫中
5)本demo可以直接運行 本來想測試protobuf進行數據處理的 要放在github上就改成json了
只能提供大概輪廓,代碼還是需要你去寫,因為你的項目只能根據你想法來寫
⑹ android什麼場景下使用線程池
service作用能夠為你運行的任務添加優先順序。優先順序別,依次減弱。前台進程,可視進程,次要服務進程,後台進程,內容供應節點,空進程。還可以做遠程服務(AIDL) 查看原帖>>
⑺ android 線程池 怎麼用
我覺得使用線程池最大的優點是我們可以對我們開啟的線程進行跟進,當我們不需要處理的時候可以將它shutdow掉,同時當我們定義了一個線程池之後,可以復用線程而不需要開啟更多線程,這點對於我們手機開發是至關重要的,你開啟的thread越多意味著你的app內存消耗越多,速度也就越來越慢,提高現有線程的復用是一個很棒的選擇
線程池中處理線程的類別較多如:
限制按順序來執行任務的線程池、一個一個任務的執行線程池、按指定個數來執行任務的線程池、創建一個可在指定時間里執行任務的線程池,亦可重復執行、按指定工廠模式來執行的線程池
⑻ android 線程池需要關閉嗎
不需要關閉
線程池的引入好處:
1.提升性能。創建和消耗對象費時費CPU資源
2.防止內存過度消耗。控制活動線程的數量,防止並發線程過多。
3.線程池技術能提高伺服器程序性能的,還顯著減少了創建線程的數目。
4.在Android中當同時並發多個網路線程時,引入線程池技術會極大地提高APP的性能。
⑼ Android的App中線程池的使用,具體使用多少個線程池
一般是按照CPU的核數來定義,例如是4核的,一般一個fixed線程池定義為4個線程左右。
⑽ 如何終止 android線程池中的任務
Executor 提供了管理終止的方法,以及可為跟蹤一個或多個非同步任務執行狀況而生成 Future 的方法。
可以關閉 ExecutorService,這將導致其拒絕新任務。提供兩個方法來關閉 ExecutorService。shutdown() 方法在終止前允許執行以前提交的任務,而 shutdownNow() 方法阻止等待任務啟動並試圖停止當前正在執行的任務。在終止時,執行程序沒有任務在執行,也沒有任務在等待執行,並且無法提交新任務。應該關閉未使用的 ExecutorService 以允許回收其資源。
通過創建並返回一個可用於取消執行和/或等待完成的 Future,方法 submit 擴展了基本方法 Executor.execute(java.lang.Runnable)。方法 invokeAny 和 invokeAll 是批量執行的最常用形式,它們執行任務 collection,然後等待至少一個,或全部任務完成(可使用 ExecutorCompletionService 類來編寫這些方法的自定義變體)。
Executors 類提供了用於此包中所提供的執行程序服務的工廠方法。