首頁 >Java >Java入門 >java中關於線程同步的理解

java中關於線程同步的理解

王林
王林原創
2019-12-06 13:53:252577瀏覽

java中關於線程同步的理解

首先了解什麼是執行緒?

我們可以在電腦上運行各種電腦軟體程式。每一個運行的程式可能包括多個獨立運行的執行緒(Thread)。 

執行緒(Thread)是一份獨立運作的程序,有自己專用的運行堆疊。線程有可能和其他線程共享一些資源,比如,內存,文件,數據庫等。 

當多個執行緒同時讀寫同一份共享資源的時候,可能會造成衝突。這時候,我們需要引入線程「同步」機制,也就是各位線程之間要有個先來後到,不能一窩蜂擠上去搶作一團。

線上影片教學推薦:java課程

線程同步的介紹

線程同步的真實意思和字面意思恰好相反。執行緒同步的真實意思,其實是「排隊」:幾個執行緒之間要排隊,一個一個對共享資源進行操作,而不是同時進行操作。

因此,關於執行緒同步,需要牢牢記住的第一點是:執行緒同步就是執行緒排隊。同步就是排隊。

執行緒同步的目的就是避免執行緒「同步」執行。

關於執行緒同步,需要牢牢記住的第二點是 「共享」這兩個字。只有共享資源的讀寫存取才需要同步。如果不是共享資源,那麼就根本沒有同步的必要。 

關於執行緒同步,需要牢牢記住的第三點是,只有「變數」才需要同步存取。如果共享的資源是固定不變的,那麼就相當於“常數”,執行緒同時讀取常數也不需要同步。至少有一個執行緒修改共享資源,這樣的情況下,執行緒之間就需要同步。

關於執行緒同步,需要牢牢記住的第四點是:多個執行緒存取共享資源的程式碼有可能是同一份程式碼,也有可能是不同的程式碼;無論是否執行同一份程式碼,只要這些執行緒的程式碼存取同一份可變的共享資源,這些執行緒之間就需要同步。

相關文章教學推薦:java快速入門

以上是java中關於線程同步的理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn