一、java反射
二、spring ioc 容器實現bean的幾種方式
三、java註解體系
四、java線程池
Exectors 及ExectorService創建和使用上述線程池
結合上述原理可以查看線程池源碼
線程池的使用
1,使用Exectors創建一個適合業務的線程池,返回的是ExectorService
2,定義線程方法run的實體
3,使用ExectorService.execte(傳入線程池的類),最後線程池執行完,記得exectorService.shutdown();關閉
最終打印的線程池名字就是1,2,3個
帶返回值的多線程
或者如下
futureTask其實也是一個線程,只不過他可以通過get()這個阻塞的方法獲取線程池返回的值。
callable接口,就一個call方法。
futureTask類關係如下
runnablefuture就一個run方法, future主要是任務的生命週期。
線程池的釋放,當超時或者run()方法執行完時,釋放部分非核心線程,直到釋放的線程數達到核心線程時,暫停釋放了。
創建的線程使用set集合存儲,線程間使用連表關聯,next()是下一個線程。