newCachedThreadPool個人理解

2021-08-29 10:21:13 字數 693 閱讀 9135

先上原始碼

public static executorservice newcachedthreadpool()
newcachedthreadpool有如下特點:

1.核心執行緒數為零    2.最大執行緒數為無限  3.無任務時,執行緒存活的最大時間為60s  4.任務隊列為同步移交佇列,該佇列沒有緩衝區,即不會有任務會在該佇列中排隊,每當有任務要入隊時,佇列都會將任務移交給乙個可用的執行緒

為什麼叫快取執行緒池,模擬於redis快取:

前者快取的是頻繁要用到的執行緒;後者快取的是頻繁要用到的資料

前者通過快取執行緒,避免了每次執行任務都要建立、銷毀執行緒的開銷;後者通過快取資料,避免了每次用到資料都要操作db

兩者都有快取失效的時間,前者對應keepalivetime引數,超過該引數對應的時間後,銷毀執行緒;後者當快取對應的真實資料被修改時,快取失效,清除資料

為了盡量重複利用快取的執行緒,而不是每次要執行任務時建立新的執行緒,應盡量使執行任務的時間小於keepalivetime引數,預設是60s

因為是乙個「快取」執行緒池,沒有快取可以永久有效,因此核心執行緒數為0。因此任務佇列的緩衝區應為空,否則即便系統有可用的執行緒資源,當有新的任務時也不會被執行,而是進入任務佇列排隊直至佇列滿,這顯然是不合理的。同樣由於佇列緩衝區為空,每來乙個任務時,都會在必要時新建執行緒執行任務,這就有可能導致大量的執行緒被建立,進而系統癱瘓

關於Java nofity wait的個人理解

首先notify,wait的經典場景是生產者,消費者模型 importorg.slf4j.logger created by wcl on 17 9 17.public classconsumerimplementsrunnable public voidrun 消費 1,當前數量 name,con...

cookie和session的個人簡單理解

瀏覽器 客戶端發起請求 伺服器響應 setcookie要求瀏覽器 客戶端生成乙個cookie 瀏覽器 客戶端儲存cookie,並在下次請求中在請求頭中傳送這個cookie 伺服器識別這個瀏覽器發來的cookie,證明是同一使用者 這個使用者請求相同的伺服器都會傳送這一cookie重複3 5步,伺服器...

Vue的slot scope的場景的個人理解

vue的插槽slot,分為3種 前兩種很好理解,無論就是子元件裡定義乙個slot佔位符,父元件呼叫時,在slot對應的位置填充模板就好了。作用域插槽的慨念,文件卻只有一句簡單的描述 有的時候你希望提供的元件帶有乙個可從子元件獲取資料的可復用的插槽。網路上大多數文章,也是千篇一律的翻譯這句話,可是僅憑...