java線程 菜雞求問,c 里的epoll和java里的線程池到底怎么理解,優(yōu)劣如何?
菜雞求問,c 里的epoll和java里的線程池到底怎么理解,優(yōu)劣如何?服務(wù)器并發(fā)模型可分為單線程和多線程模型。這里的線程通常是指“I/O線程”,即負責I/O操作和協(xié)調(diào)任務(wù)分配的“管理線程”。實際的
菜雞求問,c 里的epoll和java里的線程池到底怎么理解,優(yōu)劣如何?
服務(wù)器并發(fā)模型可分為單線程和多線程模型。這里的線程通常是指“I/O線程”,即負責I/O操作和協(xié)調(diào)任務(wù)分配的“管理線程”。實際的請求和任務(wù)通常由所謂的“工作線程”處理。在多線程模型中,每個線程不僅是一個I/O線程,而且也是一個工作線程。所以我們這里討論的是單I/O線程和多工作線程的模型,這也是最常用的服務(wù)器并發(fā)模型。這個模型在我的項目的服務(wù)器代碼中隨處可見。它還有一個名字叫做“半同步/半異步”模型。同時,這種模式也是生產(chǎn)者/消費者(特別是多消費者)模式的一種表現(xiàn)。
此體系結(jié)構(gòu)主要基于I/O多路復(fù)用的思想(主要是epoll,select/poll已過時)。通過單向I/O復(fù)用,可以實現(xiàn)高效的并發(fā),避免多線程I/O來回切換的各種開銷。它清晰易管理?;诰€程池的多工作線程可以充分發(fā)揮和利用多線程的優(yōu)點,利用線程池進程池進一步提高資源的可重用性,避免線程過多。
Epoll是Linux中高并發(fā)服務(wù)器的完美解決方案,因為它基于事件觸發(fā),所以它不僅比select快一個數(shù)量級。
單線程epoll最多可觸發(fā)15000次。但是,在添加服務(wù)之后,由于大多數(shù)服務(wù)都處理數(shù)據(jù)庫,因此會出現(xiàn)阻塞。此時,必須使用多線程來加速。
Java中的多線程,并發(fā)知識在實際項目中的什么地方可以應(yīng)用呢?
在java開發(fā)中,多線程通常用于并行處理一些業(yè)務(wù),如同時響應(yīng)多個用戶的請求,或并行啟動API處理、并發(fā)數(shù)據(jù)庫訪問等,其優(yōu)點如下:
(1)多線程提高了系統(tǒng)的CPU利用率服務(wù)器或計算機;
(2)多線程實現(xiàn)了并發(fā)處理能力,提高了訪問能力;
(3)節(jié)省了等待帶來的各種成本。