ExecutorService是Java併發包裏面的一個線程池服務
線程池的優勢
- 複用已有的線程,消除任務中建立線程的開銷
- 經過優化線程的數量,提升性能,保證處理器一直處於忙的狀態,而沒必要建立這麼多的線程,使程序耗盡資源
首先能夠帶着如下觀點一步一步看,之因此劃掉是由於第二條理論不成立...
在18.4.2的練習中,我發現用Thread對象來執行一個線程和線程池管理執行線程的一個有趣的特色:
- Thread對象是自發銷燬的,或由GC或由什麼玩意兒,自發的回收線程對象(當線程中的任務執行完成時)。
- ExecutorService,用線程池來管理線程的話,得注意shutdown掉線程池,由於即便線程池中的線程對象執行完自身任務以後,依然處於running狀態,他們已經"身不禁己"了;而且,當主線程已經執行完,咱們並無手動關閉線程池的話,ExecutorService依然存在,裏面的線程對象,還有線程池對象,甚至還多出一個destroyVM的執行線程都會一直running,這是很可怕的...
用Thread對象來執行線程:
使用線程池(ExecutorService)來管理線程:
嗯。。個人生產消費者還沒寫呢。。同窗叫擼了。。尼瑪。。我是個敗類。。匿了。。