新聞中心
static和Volatile的區(qū)別?
變量放在主存區(qū)上,使用該變量的每個線程,都將從主存區(qū)拷貝一份到自己的工作區(qū)上進行操作。

創(chuàng)新互聯(lián)建站長期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為龍子湖企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站制作,龍子湖網(wǎng)站改版等技術(shù)服務。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
volatile, 聲明這個字段易變(可能被多個線程使用),Java內(nèi)存模型負責各個線程的工作區(qū)與主存區(qū)的該字段的值保持同步,即一致性。
static, 聲明這個字段是靜態(tài)的(可能被多個實例共享),在主存區(qū)上該類的所有實例的該字段為同一個變量,即唯一性。
volatile, 聲明變量值的一致性;static,聲明變量的唯一性。
此外,volatile同步機制不同于synchronized, 前者是內(nèi)存同步,后者不僅包含內(nèi)存同步(一致性),且保證線程互斥(互斥性)。
static 只是聲明變量在主存上的唯一性,不能保證工作區(qū)與主存區(qū)變量值的一致性;除非變量的值是不可變的,即再加上final的修飾符,否則static聲明的變量,不是線程安全的。
多線程的實現(xiàn)方法,同步有幾種方法?
java中多線程的實現(xiàn)方法有兩種:
1.直接繼承thread類;
2.實現(xiàn)runnable接口;同步的實現(xiàn)方法有五種:1.同步方法;2.同步代碼塊;
3.使用特殊域變量(volatile)實現(xiàn)線程同步;
4.使用重入鎖實現(xiàn)線程同步;
5.使用局部變量實現(xiàn)線程同步。其中多線程實現(xiàn)過程中需注意重寫或者覆蓋run()方法,而對于同步的實現(xiàn)方法中使用較常使用的是利用synchronized編寫同步方法和代碼塊。
到此,以上就是小編對于java volatile和synchronized區(qū)別的問題就介紹到這了,希望這2點解答對大家有用。
本文題目:在java中synchronized和volatile的區(qū)別是什么
本文路徑:http://fisionsoft.com.cn/article/cdgpigg.html


咨詢
建站咨詢
