Java多线程使用场景
使用多線程就一定效率高嗎? 有時(shí)候使用多線程并不是為了提高效率,而是使得CPU能夠同時(shí)處理多個(gè)事件。
使用場(chǎng)景1
為什么了不阻塞主線程,啟動(dòng)其他線程來(lái)做耗時(shí)的事情。
比如app開發(fā)中耗時(shí)的操作都不在UI主線程中做。
使用場(chǎng)景2
實(shí)現(xiàn)響應(yīng)更快的應(yīng)用程序, 即主線程專門監(jiān)聽用戶請(qǐng)求,子線程用來(lái)處理用戶請(qǐng)求。以獲得大的吞吐量。
感覺(jué)這種情況下,多線程的效率未必高。 這種情況下的多線程是為了不必等待, 可以并行處理多條數(shù)據(jù)。
比如JavaWeb的就是主線程專門監(jiān)聽用戶的HTTP請(qǐng)求,然后啟動(dòng)子線程去處理用戶的HTTP請(qǐng)求。
使用場(chǎng)景3
某種優(yōu)先級(jí)雖然很低的服務(wù),但是卻要不定時(shí)去做。
比如Jvm的垃圾回收。
使用場(chǎng)景4
某種任務(wù),雖然耗時(shí),但是不耗CPU的操作時(shí),開啟多個(gè)線程,效率會(huì)有顯著提高。
比如讀取文件,然后處理。 磁盤IO是個(gè)很耗費(fèi)時(shí)間,但是不耗CPU計(jì)算的工作。 所以可以一個(gè)線程讀取數(shù)據(jù),一個(gè)線程處理數(shù)據(jù)。肯定比
一個(gè)線程讀取數(shù)據(jù),然后處理效率高。 因?yàn)閮蓚€(gè)線程的時(shí)候充分利用了CPU等待磁盤IO的空閑時(shí)間。
曾幾何時(shí)想過(guò)使用多線程讀取磁盤數(shù)據(jù), 但是讀取磁盤數(shù)據(jù)的性能瓶頸是IO,而不是CPU。 使用多線程的目的是為了不讓CPU閑下來(lái),明顯不適合用于讀取磁盤數(shù)據(jù)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/beMaster/p/5349536.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Java多线程使用场景的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 删除最大数
- 下一篇: WCF创建到使用到发布