深入理解Java虛擬機--Java內存模型與線程(一)

一、概述

       現代計算機操作系統爲了提高效率,讓計算機同時去做幾件事,如果不希望處理器在大部分時間裏都處於等待其他資源的狀態,就必須使用一些手段去把處理器的運算能力"壓榨"出來,否則就會造成很大的浪費,而讓計算機同時處理幾項任務則是最容易想到、也是非常有效的"壓榨"手段。

        除了充分利用計算機處理器的能力外,一個服務端同時對多個客戶端提供服務則是另一個更具體的併發應用場景(也就是常說的高併發)。衡量一個服務性能的高低好壞,每秒事務處理數(TPS)是最重要的指標之一,它代表着一秒內服務端平均能相應的請求總數,而TPS值與程序的併發能力又有非常密切的關係。對於計算量相同的任務,程序線程併發協調的越有條不紊,效率自然就會越高;反之,線程之間頻繁阻塞甚至死鎖,將會大大降低程序的併發能力。

        Java語言和虛擬機提供了許多工具,把併發編程的門檻降低了不少。並且各種中間件服務器、各類框架都努力地替程序員處理儘可能多的線程併發細節,使得程序員在編碼時能更關注業務邏輯,而不是花費大部分時間去關注服務會同時被多少人調用、如何協調硬件資源。

二、硬件的效率與一致性

        物理機遇到的併發問題與Java虛擬機中的情況有不少相似之處,其中物理機中有一個重要的複雜性來源是絕大多數的運算任務都不可能只靠"計算"就能完成,處理器至少要與內存交互,如讀取運算數據,存儲運算結果,這個I/O操作很難消除(無法僅靠寄存器來完成所有運算任務)。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章