日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android的线程管理器,[Android开源]:一款安全、轻巧、简单的线程池管理器EasyThread...

發布時間:2024/10/6 Android 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android的线程管理器,[Android开源]:一款安全、轻巧、简单的线程池管理器EasyThread... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

EasyThread通過對原生的線程池進行封裝,可讓你更方便的進行線程任務操作。

特性

簡單輕巧:方法數不過百,無額外次級依賴。

配置靈活:可方便、靈活的對每次所啟動的任務,配置線程名、線程優先級等。

使用安全:當線程出現異常。能自動將catch異常信息傳遞給用戶,避免出現crash。

線程切換:自帶線程切換功能:指定任務執行后,在哪個線程中進行用戶通知。

回調通知:當任務啟動時與任務運行完畢后。有分別的生命周期作為通知。

任務擴展:支持延遲任務以及異步回調任務

依賴

// 添加jitPack倉庫使用

maven { url 'https://jitpack.io' }

// 添加依賴

compile "com.github.yjfnypeu:EasyThread:0.5.0"

復制代碼

基本用法

使用方式分兩步走:

第一步:創建EasyThread實例。每個EasyThread實例會持有一個獨立的線程池提供使用。

EasyThread easyThread = EasyThread.Builder

//提供了四種create方法,用于根據需要創建不同類型的線程池進行使用

//比如createSingle():表示創建一個單例的線程池進行使用

.createXXX()

.build();

復制代碼第二步:使用創建的EasyThread實例進行任務執行:

EasyThread支持執行四種任務:

1. 普通Runnable任務

easyThread.execute(new Runnable(){

@Override

public void run() {

// do something.

}

});

復制代碼

2. 普通Callable任務

Future task = easyThread.submit(new Callback(){

@Override

public User call() throws Exception {

// do something

return user;

}

})

User result = task.get();

復制代碼

3. 異步回調任務

// 異步執行任務

Callable callable = new Callable(){

@Override

public User call() throws Exception {

// do something

return user;

}

}

// 異步回調

AsyncCallback async = new AsyncCallback() {

@Override

public void onSuccess(User user) {

// notify success;

}

@Override

public void onFailed(Throwable t) {

// notify failed.

}

};

// 啟動異步任務

easyThread.async(callable, async)

復制代碼

4. 延遲后臺任務

// 在啟動任務前,調用delay方法,指定延遲時間即可

easyThread.setDelay(time, unit)

.execute(runnable);

復制代碼

e.g 延遲3秒啟動執行任務

easyThread.setDelay(3, TimeUnit.SECONDS)

.execute(task);

復制代碼

高級配置

EasyThread提供了各種的額外配置,通過這些配置可以讓線程操作使用起來更加得心應手。

兩種配置方式

這里我們以配置后臺優先級進行說明:

1. 配置默認線程任務優先級(默認配置)

EasyThread.Builder.createXXX().setPriority(priority);

復制代碼

2. 配置當前線程任務優先級(當前任務配置)

easyThread.setPriority(priority).execute(task);

復制代碼

線程優先級及線程名

配置方式:

easyThread.setName(name)// 配置線程任務名

.setPriority()// 配置線程運行優先級

復制代碼

任務回調通知

接口說明:

public interface Callback{

// 線程任務啟動時的通知

void onStart (String threadName);

// 線程任務運行時出現異常時的通知

void onError (String threadName, Throwable t);

// 線程任務正常執行完成時的通知

void onCompleted (String threadName);

}

復制代碼

配置方式:

easyThread.setCallback(callback);

復制代碼

消息派發器

消息派發器用于消息回調線程切換,即指定回調任務需要運行在什么線程之上。

比如說在Android平臺,很常見的就是回調時需要進行界面通知,所以這個時候就需要回調通知運行在UI線,便于操作。

配置方式:

// 派發器的實例類型為java.util.concurrent.Executor子類

easyThread.setDeliver(deliver);

復制代碼

在默認條件下(即未配置額外的派發器時),在Android或者Java平臺,分別適配了不同的回調派發邏輯:

在純java環境下:回調方法所運行的線程與任務執行線程一致

在Android環境:回調方法默認運行于主線程

推薦配置

對于APP來說。線程資源是寶貴的。為了避免創建過多額外的線程,所以建議對每個app。提供一個統一的管理器維護所有的線程池,如下所示:

public final class ThreadManager{

private final static EasyThread io;

private final static EasyThread cache;

private final static EasyThread calculator;

private final static EasyThread file;

public static EasyThread getIO (){

return io;

}

public static EasyThread getCache(){

return cache;

}

public static EasyThread getCalculator(){

return calculator;

}

public static EasyThread getFile(){

return file;

}

static {

io = EasyThread.Builder.createFixed(6).setName("IO").setPriority(7).setCallback(new DefaultCallback()).build();

cache = EasyThread.Builder.createCacheable().setName("cache").setCallback(new DefaultCallback()).build();

calculator = EasyThread.Builder.createFixed(4).setName("calculator").setPriority(Thread.MAX_PRIORITY).setCallback(new DefaultCallback()).build();

file = EasyThread.Builder.createFixed(4).setName("file").setPriority(3).setCallback(new DefaultCallback()).build();

}

private static class DefaultCallback implements Callback{

@Override

public void onError(String threadName, Throwable t){

MyLog.e("Task with thread %s has occurs an error: %s", threadName, t.getMessage());

}

@Override

public void onCompleted(String threadName){

MyLog.d("Task with thread %s completed", threadName);

}

@Override

public void onStart(String threadName){

MyLog.d("Task with thread %s start running!", threadName);

}

}

}

復制代碼

總結

以上是生活随笔為你收集整理的android的线程管理器,[Android开源]:一款安全、轻巧、简单的线程池管理器EasyThread...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。