日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

java线程的内存模型_java多线程内存模型

發(fā)布時(shí)間:2025/3/21 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java线程的内存模型_java多线程内存模型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java多線程內(nèi)存模型:

可見性

要實(shí)現(xiàn)共享變量的可見性,必須保證兩點(diǎn):

1、線程修改后的共享變量能夠及時(shí)從工作內(nèi)存刷新到主內(nèi)存中;

2、其他線程能夠及時(shí)把共享變量的最新值從主內(nèi)存更新到自己的工作內(nèi)存中;

java語言層面的可見性實(shí)現(xiàn)方式(不包含jdk1.5后concurrent中包含的的)

* synchronized

* volatile

Synchronized實(shí)現(xiàn)可見性

synchronized可以實(shí)現(xiàn)互斥鎖(同步),從而保證在任何一個(gè)時(shí)刻只有一個(gè)線程在執(zhí)行鎖內(nèi)部的代碼(原子性);

synchronized能夠?qū)崿F(xiàn)

* 原子性(同步鎖)

* 內(nèi)存可見性

JMM關(guān)于synchronized的兩條規(guī)定

* 線程解鎖前(退出synchronized代碼塊),必須把共享變量的最新值刷新到主內(nèi)存中;

*線程加鎖前(進(jìn)入synchronized代碼塊)時(shí),將清空工作內(nèi)存中共享變量的值,從而使用共享變量時(shí)需要從主內(nèi)存中重新讀取最新的值(注意:加鎖與解鎖需要是同一把鎖)

原子性

指令重排序

內(nèi)存可見性

volatile無法保證原子性

主線程等待 子線程都運(yùn)行完才結(jié)束

使用while(Thread.activeCount() > 1) {

Thread.yield();

}

所有子線程都join()方式:http://blog.csdn.net/nms312/article/details/30115055

總結(jié)

以上是生活随笔為你收集整理的java线程的内存模型_java多线程内存模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。