Ⅰ android 怎樣將線程池封裝到自己的網路請求底層
對非同步請求封裝 ,可用作基本項目框架來使用
1)封裝HttpClient
2)由於用到線程池,可以進行多任務網路請求操作
3)沒有網路的時候進行網路狀態檢查
4)對請求的數據根據URL進行緩存到本地sqlite資料庫中
5)本demo可以直接運行 本來想測試protobuf進行數據處理的 要放在github上就改成json了
只能提供大概輪廓,代碼還是需要你去寫,因為你的項目只能根據你想法來寫
Ⅱ 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);
}
}
//自己覺得這個·代碼不錯,我就只是將它搬了過來,實際代碼地址:http://blog.csdn.net/weihan1314/article/details/7983725
Ⅲ android 線程池 怎麼用
我覺得使用線程池最大的優點是我們可以對我們開啟的線程進行跟進,當我們不需要處理的時候可以將它shutdow掉,同時當我們定義了一個線程池之後,可以復用線程而不需要開啟更多線程,這點對於我們手機開發是至關重要的,你開啟的thread越多意味著你的app內存消耗越多,速度也就越來越慢,提高現有線程的復用是一個很棒的選擇
線程池中處理線程的類別較多如:
限制按順序來執行任務的線程池、一個一個任務的執行線程池、按指定個數來執行任務的線程池、創建一個可在指定時間里執行任務的線程池,亦可重復執行、按指定工廠模式來執行的線程池
Ⅳ Android 對線程封裝了:AsyncTask, HandlerThread和線程池。 有知道這三個如何選擇嗎
AsyncTask性能不怎麼高,而且還有內存泄漏的隱患。之所以現在沒有刪掉這個類庫,是因為很多應用都是基於這個庫的,Google這邊一刪,別人軟體就崩了。
Ⅳ 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的App中線程池的使用,具體使用多少個線程池
1.可以根據cpu數來配。
2. 其實這個問題只是線程池的使用理解上來做的,具體看功能。
3. 所謂線程池就是一種對象池緩存優化技術,當任務量非常巨大的時候具有減少內存開銷的作用。
Ⅶ android什麼時候使用線程池
線程池的具體實現為ThreadPoolExeutor,其介面為Executor。
ThreadPoolExecutor提供了一系列的參數用於配置線程池。
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory) {
Ⅷ android 多線程並發和線程池的區別
多線程並發和多線程管理,比如說一條線程專門負責讀取數據,一條線程專門負責輸出數據, 還有一條主線程專門用來顯示界面UI, 更新UI等這些就是多線程了.
Ⅸ android 線程池需要關閉嗎
不需要關閉
線程池的引入好處:
1.提升性能。創建和消耗對象費時費CPU資源
2.防止內存過度消耗。控制活動線程的數量,防止並發線程過多。
3.線程池技術能提高伺服器程序性能的,還顯著減少了創建線程的數目。
4.在Android中當同時並發多個網路線程時,引入線程池技術會極大地提高APP的性能。
Ⅹ 如何終止 android線程池中的任務
Executor 提供了管理終止的方法,以及可為跟蹤一個或多個非同步任務執行狀況而生成 Future 的方法。
可以關閉 ExecutorService,這將導致其拒絕新任務。提供兩個方法來關閉 ExecutorService。shutdown() 方法在終止前允許執行以前提交的任務,而 shutdownNow() 方法阻止等待任務啟動並試圖停止當前正在執行的任務。在終止時,執行程序沒有任務在執行,也沒有任務在等待執行,並且無法提交新任務。應該關閉未使用的 ExecutorService 以允許回收其資源。
通過創建並返回一個可用於取消執行和/或等待完成的 Future,方法 submit 擴展了基本方法 Executor.execute(java.lang.Runnable)。方法 invokeAny 和 invokeAll 是批量執行的最常用形式,它們執行任務 collection,然後等待至少一個,或全部任務完成(可使用 ExecutorCompletionService 類來編寫這些方法的自定義變體)。
Executors 類提供了用於此包中所提供的執行程序服務的工廠方法。