电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

深入分析JAVA Synchronized關鍵字

瀏覽:104日期:2022-08-30 17:02:41

并發一致性的概念?

是利用鎖的機制來實現同步的,鎖機制有如下兩種特性:

互斥性:即在同一時間只允許一個線程持有某個對象鎖,通過這種特性來實現多線程中的協調機制,這樣在同一時間只有一個線程對需同步的代碼塊(復合操作)進行訪問?;コ庑晕覀円餐Q為操作的原子性。

可見性:必須確保在鎖被釋放之前,對共享變量所做的修改,對于隨后獲得該鎖的另一個線程是可見的(即在獲得鎖時應獲得最新共享變量的值),否則另一個線程可能是在本地緩存的某個副本上繼續操作從而引起不一致。

Synchronized的用法?

1.同步方法

同步非靜態方法

/** * Synchronized關鍵字的用法 * @author Administrator * */public class SynchronizeDemo01 { /** * 修飾非靜態方法 * @Description: TODO * @returnType: void */ public synchronized void accessResources1(){ try { TimeUnit.SECONDS.sleep(2); System.out.println(Thread.currentThread().getName()+' is running!'); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { //非靜態方法的測試 SynchronizeDemo01 demo01 = new SynchronizeDemo01(); for (int i = 0; i < 5; i++) { new Thread(demo01::accessResources1).start(); } }}

同步靜態方法

/** * Synchronized關鍵字的用法 * @author Administrator * */public class SynchronizeDemo01 { /** * 修飾靜態方法 * @Description: TODO * @returnType: void */ public synchronized static void accessResources0(){ try { TimeUnit.SECONDS.sleep(2); System.out.println(Thread.currentThread().getName()+' is running!'); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { //靜態方法的測試 for(int i=0;i<5;i++){ new Thread(SynchronizeDemo01::accessResources0).start(); } }}

2.同步代碼塊

代碼塊對象,獲取對象鎖,在 Java 中,每個對象都會有一個 monitor 對象,這個對象其實就是 Java 對象的鎖,通常會被稱為“內置鎖”或“對象鎖”。類的對象可以有多個,所以每個對象有其獨立的對象鎖,互不干擾。

/** * Synchronized關鍵字的用法 * @author Administrator * */public class SynchronizeDemo01 { /** * synchronized代碼塊(對象),this指的是當前對象 * @Description: TODO * @returnType: void */ public void accessResources2(){ synchronized(this){ try {TimeUnit.SECONDS.sleep(2);System.out.println(Thread.currentThread().getName()+' is running!'); } catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace(); } } } public static void main(String[] args) { //非靜態方法的測試 SynchronizeDemo01 demo01 = new SynchronizeDemo01(); for (int i = 0; i < 5; i++) { new Thread(demo01::accessResources2).start(); } }}

代碼塊 (類.class),獲取類鎖,在 Java 中,針對每個類也有一個鎖,可以稱為“類鎖”,類鎖實際上是通過對象鎖實現的,即類的 Class 對象鎖。每個類只有一個 Class 對象,所以每個類只有一個類鎖。

/** * Synchronized關鍵字的用法 * @author Administrator * */public class SynchronizeDemo01 { /** * synchronized代碼塊(類.class) * @Description: TODO * @returnType: void */ public void accessResources3(){ synchronized(SynchronizeDemo01.class){ //有Class對象的所有的對象都共同使用這一個鎖 try {TimeUnit.SECONDS.sleep(2);System.out.println(Thread.currentThread().getName()+' is running!'); } catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace(); } } } public static void main(String[] args) { //非靜態方法的測試 SynchronizeDemo01 demo01 = new SynchronizeDemo01(); for (int i = 0; i < 5; i++) { new Thread(demo01::accessResources3).start(); } }}

Java對象的monitor對象的作用?

1.當某一線程想要占有這個對象的時候,首先判斷monitor 的計數器是不是0,如果是0表示還沒有線程占有,這個時候線程可以占有這個對象,并且對這個對象的monitor+1;如果不為0,表示這個線程已經被其他線程占有,那么這個線程需要等待。當線程釋放占有權的時候,monitor-1。

2. 同一線程可以對同一對象進行多次加鎖,+1,+1,重入性

Synchronized代碼塊的加鎖機制?

1.對代碼塊的加鎖,通過反編譯文件,發現在Monitorenter和Monitorexit中間是加鎖的部分

深入分析JAVA Synchronized關鍵字

2.對方法的加鎖,通過反編譯文件,發現標有ACC_SYNCHRONIZED標識的為加鎖方法

深入分析JAVA Synchronized關鍵字

Java虛擬機中幾種鎖的對比?

深入分析JAVA Synchronized關鍵字

無狀態鎖:沒有加鎖

偏向鎖:在對象第一次被某一線程占有的時候,會將“是否偏向鎖”字段置為1,“鎖標志位”記為01,寫入線程號,當其他的線 程訪問的時候,就會發生 競爭,如果競爭失敗則升級為輕量級鎖。偏向鎖更加偏向第一次訪問的線程獲取鎖成功。

  輕量級鎖:線程有交替適用,互斥性不是很強,當偏向鎖通過CAS算法獲取鎖失敗,把鎖標志位置為00。

重量級鎖:強互斥,鎖標志位為10,等待時間長

以上就是深入分析JAVA Synchronized關鍵字的詳細內容,更多關于JAVA Synchronized關鍵字的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 清水混凝土修复_混凝土色差修复剂_混凝土色差调整剂_清水混凝土色差修复_河南天工 | 热熔胶网膜|pes热熔网膜价格|eva热熔胶膜|热熔胶膜|tpu热熔胶膜厂家-苏州惠洋胶粘制品有限公司 | 奶茶加盟,奶茶加盟店连锁品牌-甜啦啦官网 | 南京办公用品网-办公文具用品批发-打印机耗材采购 | 刹车盘机床-刹车盘生产线-龙口亨嘉智能装备 | 光伏家 - 太阳能光伏发电_分布式光伏发电_太阳能光伏网 | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 | 纸布|钩编布|钩针布|纸草布-莱州佳源工艺纸布厂 | 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 婚博会2024时间表_婚博会门票领取_婚博会地址-婚博会官网 | 上海律师事务所_上海刑事律师免费咨询平台-煊宏律师事务所 | 药品仓库用除湿机-变电站用防爆空调-油漆房用防爆空调-杭州特奥环保科技有限公司 | 步进电机_agv电机_伺服马达-伺服轮毂电机-和利时电机 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 知网论文检测系统入口_论文查重免费查重_中国知网论文查询_学术不端检测系统 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 天津散热器_天津暖气片_天津安尼威尔散热器制造有限公司 | 领袖户外_深度旅游、摄影旅游、小团慢旅行、驴友网 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 电池挤压试验机-自行车喷淋-车辆碾压试验装置-深圳德迈盛测控设备有限公司 | 大型低温冷却液循环泵-低温水槽冷阱「厂家品牌」京华仪器_京华仪器 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 螺旋绞龙叶片,螺旋输送机厂家,山东螺旋输送机-淄博长江机械制造有限公司 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 电主轴,车床电磨头,变频制动电机-博山鸿达特种电机 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 口臭的治疗方法,口臭怎么办,怎么除口臭,口臭的原因-口臭治疗网 | 常州减速机_减速机厂家_常州市减速机厂有限公司 | 一氧化氮泄露报警器,二甲苯浓度超标报警器-郑州汇瑞埔电子技术有限公司 | 比士亚-专业恒温恒湿酒窖,酒柜,雪茄柜的设计定制 | 流程管理|流程管理软件|企业流程管理|微宏科技-AlphaFlow_流程管理系统软件服务商 | 西安文都考研官网_西安考研辅导班_考研培训机构_西安在职考研培训 | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 奶茶加盟,奶茶加盟店连锁品牌-甜啦啦官网 | X光检测仪_食品金属异物检测机_X射线检测设备_微现检测 | 杭州营业执照代办-公司变更价格-许可证办理流程_杭州福道财务管理咨询有限公司 | 生产加气砖设备厂家很多,杜甫机械加气砖设备价格公道 | 兰州牛肉面加盟,兰州牛肉拉面加盟-京穆兰牛肉面 |