參見 《
經驗實在太重要了:epoll的一些補充》
epoll模式分為et邊緣模式和 lt水平模式
io 阻塞模式分為 阻塞和非阻塞
1、et邊緣模式(listen socket fd)+非阻塞(listen socket fd)
可以使用同一執行緒的epoll,但是應注意如果是 listen socket fd可讀,應使用 while 重複 accept 多個連線
2、et邊緣模式(listen socket fd)+阻塞(listen socket fd)
由於 listen socket fd 是阻塞的,accept 和 epoll 最好放在兩個執行緒;否則因為listen socket fd 是 et邊緣模式,有一到多個連線過來,如
果此時讓該單執行緒while阻塞在 listen socket fd 的 accept上,程式將一直沒有響應,如果不用while,而僅僅accept 一次,則會使得該次epoll
事件中的後續連線無法 accept到
3、lt水平模式(listen socket fd)+非阻塞(listen socket fd)
可以使用同一執行緒epoll,不需要while重複accept多個連線
4、lt水平模式(listen socket fd)+阻塞(listen socket fd)
此模式非常類似經典select、poll,相當於乙個快速的poll
執行緒池的理解2
使用者提交任務 條件1.核心池已滿?是 2.佇列已滿?是 3.執行緒池已滿?是 按照策略執行不能處理的任務 否 否 否 執行緒建立執行緒執行任務 將任務儲存到阻塞佇列 建立執行緒執行任務 addworker 執行緒主要的步驟 需要獲取全域性鎖,影響效能 在execte 中建立乙個新的執行緒 步驟1 ...
自定義執行緒池的實踐
自定義執行緒池 public class userdefinedthread catch interruptedexception e system.out.println 執行緒 a 執行完畢 定義執行緒工廠 static class definethreadfactory implements ...
java執行緒池(2) 執行緒池新增任務的過程(原理)
上一期簡單的聊了一下執行緒池的建立。這一期我們就,稍微熟悉一下執行緒池執行任務的過程吧!執行緒池的工作原理是怎麼樣的呢?首先,我用圖來說明吧!這裡可以看到有乙個任務佇列,然後還有乙個工作的執行緒池。今天主要將的就是向任務佇列中新增任務的過程!對於執行緒池我們上一期是做了乙個稍微的解釋的。我們構建執行...