AsncTask原始碼解析

2021-07-24 02:51:34 字數 1990 閱讀 9889

-------------------------------------asnctask原始碼解析-----------------------------------

class asynctask//從這裡可以看出它上面有三個泛型

public static final executor serial_executor = new serialexecutor();//這裡建立乙個執行緒執行器

private static volatile executor sdefaultexecutor = serial_executor;

private final workerrunnablemworker;//這主要用來儲存引數們和實現callable介面

private final futuretaskmfuture;//這主要進行程式錯誤處理它構造方法裡面傳入了mworker

public static final executor thread_pool_executor= new threadpoolexecutor(core_pool_size, maximum_pool_size, keep_alive,timeunit.seconds, spoolworkqueue, sthreadfactory);//這裡建立乙個執行緒池

private volatile status mstatus = status.pending;//這個屬性是個列舉

public asynctask()

};mfuture = new futuretask(mworker) };}

//這裡是它的execute方法它其實會呼叫executeonexecutor方法

public final asynctaskexecute(params... params)

public final asynctaskexecuteonexecutor(executor exec,params... params)

//先修改它的標記為running防止它被再次呼叫

mstatus = status.running;

onpreexecute();//從這裡可以看出它是執行在主線程中

mworker.mparams = params;//保持引數

exec.execute(mfuture);//這裡會呼叫該進的執行緒池。從上面可以知道他是serial_executor;它傳入的引數是callable的實現類 workerrunnable

return this;

}protected final void publishprogress(progress... values)

}private result postresult(result result)

private void finish(result result) else

mstatus = status.finished;//修改標記為完成狀態finished

}private static handler gethandler()

return shandler;}}

額外知識:(這裡都是在asynctask的裡面要麼是內部類要麼是巢狀類)

public enum status

private static abstract class workerrunnableimplements callable

private static class serialexecutor implements executor finally

}});

if (mactive == null)

}protected synchronized void schedulenext() }}

private static class asynctaskresult

}private static class internalhandler extends handler

@override

public void handlemessage(message msg) }}

Fabric 原始碼解析 原始碼目錄解析

這裡對重要的一些目錄進行說明 bccsp 與密碼學 加密 簽名 證書等等 相關的加密服務 將fabric中用到的密碼學相關的函式抽象成了一組介面,便於拓展。bddtests 一種新型的軟體開發模式 行為驅動開 需求 開發 common 一些公共庫 錯誤處理 日誌處理 賬本儲存 策略以及各種工具等等 ...

Spring原始碼解析之 Aop原始碼解析(2)

spring aop 更多的是oop開發模式的乙個補充,幫助oop以更好的方式來解決對於需要解決業務功能模組之上統一管理 的功能 以一副圖來做為aop功能的說明更直觀些。對於類似系統的安全檢查,系統日誌,事務管理等相關功能,物件導向的開發方法並沒有更好的解決方法 aop引入了一些概念。更多的是spr...

Integer原始碼解析

public class test else integer i3 200 integer i4 200 if i3 i4 else 結果為 原因integer 類會快取 128 到 127 之間的整數 但是如果new interger的話就是不同的物件了 源 分析 如果是在 128到正的127之間...