? ? 盡管我們在前面的幾個章節(jié)中产场,講的都是在單個線程中一次只執(zhí)行單個語句或單個表達式光戈,然而java虛擬機卻支持一次運行多個線程。這些線程都是獨立地執(zhí)行代碼泽论,并且這些代碼操作的都是一個共享內(nèi)存中的值和對象戳杀。多處理器機器能夠支持線程该面,單處理器機器通過時間分片(time-slicing) 也能支持多線程。
在java中信卡,我們使用Thread類來代表一個線程Thread隔缀,用戶創(chuàng)建線程只有一個方式,那就是 創(chuàng)建一個Thread類的實例對象傍菇,每一個線程都和一個Thread對象相關(guān)聯(lián)猾瘸。通過在相應(yīng)Thread對象上調(diào)用start()方法,可以啟動一個線程桥嗤。
? ? ?當沒有正確地進行同步操作時须妻,線程的行為就會表現(xiàn)的很奇怪仔蝌。這一章講的都是多線程程序下的語義泛领。比如: 當多個線程都更新了共享內(nèi)存上的值時,哪一個值對于讀操作來說是可見的敛惊。 由于這個手冊相當于是一個針對不同硬件架構(gòu)的內(nèi)存模型渊鞋,所以這些又被稱為 java編程語言內(nèi)存模型。在不引起混淆的情況下瞧挤,我們將簡單地把這些規(guī)則稱為“內(nèi)存模型”锡宋。
? ? ? 這些語法并沒有規(guī)定一個多線程的程序應(yīng)該怎樣被執(zhí)行,相反特恬,它描述的是多線程程序被允許表現(xiàn)出來的行為执俩。只有那些僅僅產(chǎn)生了所允許行為的執(zhí)行策略才是一個可接受的執(zhí)行策略。
原文:
原文