線程池-ThreadPoolExecutor

線程池的原理:java

因爲我們新版jdk中java線程和操做系統線程是一對一的,因此啓動線程是經過jvm調用操做系統接口來建立線程的(Thread.start(start0()是個native方法))jvm

而後start0方法啓動的操做系統線程如何調用Thread的run方法呢?沒錯就是經過jvm來調用的java中Thread的run方法的操作系統

 

那麼線程池的原理就是經過一個計數器和work隊列來維護線程池的大小線程

每建立一個Thread(經過Work來包裝的從queue隊列中取出來的Runnable實現),則以CAS的方式增長計數器,並將新增的work放入work隊列blog

在Work的執行過程當中,異常退出,則計數器-1,而且從新生成一個work來繼續處理接口

相關文章
相關標籤/搜索