-------------------------------------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之間...