在Java的NIO程式設計中,在ACCEPT事件監聽處理中,使用阻塞和非阻塞對效率影響大嗎?

時間 2021-06-01 02:14:39

1樓:觸發器

是一樣的,因為selecter的select()方法在沒有accept事件的時候也會阻塞。另外只處理accept事件又不需要處理讀寫資料,就沒有其他阻塞了。

2樓:程羅

乙個執行緒a阻塞在accept上,另乙個執行緒b阻塞在selector的select上。每當到來乙個連線,a都要呼叫selector的wakeup去喚醒執行緒b,用來使register生效。

wakeup的原理是jvm在epoll上註冊了乙個控制代碼,執行wakeup時往控制代碼裡寫乙個位元組,使得epoll返回。

所以,你說的方案,多了乙個執行緒,增多了wakeup的次數,並沒有帶來實際的好處。

3樓:

瀉藥. 雖然也不知道是誰給的藥.

Acceptor阻塞的話, 就需要單獨跑在乙個執行緒中, 對另乙個執行緒中的Selector用到的資料結構會有併發的問題.. 還不如把Acceptor也加到Selector裡呢.

4樓:何柄融

NIO不就是為了不阻塞而生成的嗎?它不就是因為不阻塞而提高計算機的使用效率嗎?你這樣新增阻塞了不久相當於沒有加NIO了嗎。。。。。。。

阻塞了就是CPU一直在查詢,不阻塞了就是有了乙個中斷反饋給CPU,你說影響大嗎?我只是從我的認識上提出看法,你可以多看看其他的

在java企業級程式設計中kafka有什麼用?

rail gun 首先,kafka作為訊息中介軟體。在企業級程式設計中實現,消費端和生產端的解耦。使得,生產端和消費端只需要實現自己的業務邏輯,而不需要去關注訊息的本身的傳遞。另外,由於訊息中間價的解耦,可以使得生產端和消費端節點很容易動態的擴增。其次,kafka作為一種大吞吐量的訊息中介軟體,可以...

java 中的hashmap在多執行緒中是不安全的,開發中還經常用,是spring框架幫忙解決了嗎 ?

程式猿弟弟 不安全 第一時間就會想到多執行緒吧。只有在多執行緒併發的情況下才會出現不安全的。我們在開發的過程中,乙個請求就是乙個執行緒。在乙個執行緒裡面做hashmap儲存是沒有問題的。我覺得樓主提的問題應該是spring在使用單利bean物件是如何保證request執行緒的隔離。這樣問才有意義。 ...

個在JAVA中要怎麼實現呀?

考慮這樣?1 轉成字元陣列 2 遍歷字元陣列 3 每次遍歷,加入到乙個Map裡面 key是字元,value是出現次數。先判斷是否存在key,存在就value 1,否則就存入key 字元,value 1 4 遍歷這個map,輸出字元和對應的出現次數。5 替換用 String的replace方法?Map...