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

您的位置:首頁技術(shù)文章
文章詳情頁

Java線程安全解決方案(synchronized,ReentrantLock,Atomic)

瀏覽:7日期:2022-08-23 16:52:39

線程安全解決方案

synchronized,ReentrantLock,Atomic 使用場(chǎng)景描述

在實(shí)際開發(fā)過程中如果服務(wù)量,請(qǐng)求頻繁,就會(huì)經(jīng)常碰見并發(fā),這時(shí)候不做處理就會(huì)出現(xiàn)很多非法數(shù)據(jù)。這時(shí)候就需要解決線程安全的問題,這時(shí)候就可以使用java當(dāng)中的鎖機(jī)制。常用有java關(guān)鍵synchronized、可重入鎖ReentrantLock,還有并發(fā)包下的Atomic 或者Concurrent的安全類型。

synchronized使用場(chǎng)景:

在資源競(jìng)爭(zhēng)不是很激烈的情況下,偶爾出現(xiàn)并發(fā),需要同步的情形下,synchronized是很合適的。原因在于,編譯程序通常會(huì)盡可能的進(jìn)行優(yōu)化synchronized,另外可讀性非常好,不管用沒用過5.0多線程包的程序員都能理解。可以多對(duì)方法進(jìn)行加鎖(同步方法),也可以對(duì)對(duì)象進(jìn)行加鎖(同步代碼快)。

/** * synchronized用id */ private static volatile Long syncId=0L; /** * synchronized方式獲取id 同步方法 * @return */ public static synchronized Long getSyncId1(){ syncId++; return syncId; } /** * synchronized方式獲取id 同步代碼塊 * @return */ public static Long getSyncId2(){ synchronized (syncId){ syncId++; return syncId; } }

代碼可讀性強(qiáng),畢竟是java的關(guān)鍵字,執(zhí)行優(yōu)先級(jí)高。synchronized關(guān)鍵字一放,就解決線程安全的問題。

但是還有一個(gè)問題,當(dāng)前資源競(jìng)爭(zhēng)激烈時(shí),對(duì)于部分線程遲遲獲取不到鎖,這時(shí)候會(huì)出現(xiàn)一個(gè)鎖升級(jí)的過程,且鎖升級(jí)的過程是不可逆的。當(dāng)從輕量級(jí)鎖到偏向鎖,再到一個(gè)重量級(jí)鎖。性能會(huì)大大的降低。

在資源競(jìng)爭(zhēng)激烈可以使用其他方式來加鎖。

ReentrantLock使用場(chǎng)景:

ReentrantLock提供了多樣化的同步,比如有時(shí)間限制的同步,可以被Interrupt的同步(synchronized的同步是不能Interrupt的)等。在資源競(jìng)爭(zhēng)不激烈的情形下,性能稍微比synchronized差點(diǎn)點(diǎn)。但是當(dāng)同步非常激烈的時(shí)候,synchronized的性能一下子能下降好幾十倍。而ReentrantLock還能保證正常的性能。

且這個(gè)鎖可以定義成公平鎖還可以定義成非公平鎖。

/** * ReentrantLock用id */ private static volatile Long lockId=0L; /** * ReentrantLock公平鎖 */ private static final ReentrantLock reentrantLock = new ReentrantLock(true); /** * ReentrantLock方式獲取id * @return */ public static Long getLockId(){ reentrantLock.lock(); try { lockId++; return lockId; }catch (Exception e){ e.printStackTrace(); return getLockId(); }finally { reentrantLock.unlock(); } }

我這里以公平鎖作為演示對(duì)象。ReentrantLock還可以查看鎖的狀態(tài), 鎖是否被鎖上了.可以查看當(dāng)前有多少線程再等待鎖。但是因?yàn)镽eentrantLock是悲觀鎖,加鎖時(shí)會(huì)對(duì)資源進(jìn)行加鎖,當(dāng)讀取頻繁時(shí)性能會(huì)不如CAS的樂觀鎖。所以讀取頻繁使用樂觀鎖,寫入頻繁使用悲觀鎖。

Atomic或者Concurrent使用場(chǎng)景:

和上面的類似,不激烈情況下,性能比synchronized略遜,而激烈的時(shí)候,也能維持常態(tài)。激烈的時(shí)候,Atomic的性能會(huì)優(yōu)于ReentrantLock一倍左右。但是其有一個(gè)缺點(diǎn),就是只能同步一個(gè)值,一段代碼中只能出現(xiàn)一個(gè)Atomic的變量,多于一個(gè)同步無效。因?yàn)樗荒茉诙鄠€(gè)Atomic之間同步。

/** * Atomic用id */ private static volatile AtomicLong atomicId=new AtomicLong(0L); /** * Atomic方式獲取id * @return */ public static Long getAtomicId(){ return atomicId.addAndGet(1); }

對(duì)于其他類型的比如和Map和Set可以使用用并發(fā)包下的ConcurrentHashMap和ConcurrentHashSet等線程安全的數(shù)據(jù)類型。

/** * 線程安全的hashMap */ private static ConcurrentHashMap<String,String> hashMap = new ConcurrentHashMap<>(); public static void put(String key,String value){ hashMap.put(key,value); } public static String get(String key{ return hashMap.get(key); }

ConcurrentHashMap內(nèi)部的實(shí)現(xiàn)是CAS的樂觀鎖,當(dāng)鎖無法取得會(huì)開始自旋,直到下一次取得鎖。

到此這篇關(guān)于Java線程安全解決方案(synchronized,ReentrantLock,Atomic)的文章就介紹到這了,更多相關(guān)Java線程安全內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 披萨石_披萨盘_电器家电隔热绵加工定制_佛山市南海区西樵南方综合保温材料厂 | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格 | HDPE储罐_厂家-山东九州阿丽贝防腐设备 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 常州翔天实验仪器厂-恒温振荡器-台式恒温振荡器-微量血液离心机 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 【连江县榕彩涂料有限公司】官方网站 | 执业药师报名条件,考试时间,考试真题,报名入口—首页 | 仿古瓦,仿古金属瓦,铝瓦,铜瓦,铝合金瓦-西安东申景观艺术工程有限公司 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 九爱图纸|机械CAD图纸下载交流中心 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 高精度电阻回路测试仪-回路直流电阻测试仪-武汉特高压电力科技有限公司 | 冷油器-冷油器换管改造-连云港灵动列管式冷油器生产厂家 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 南京欧陆电气股份有限公司-风力发电机官网 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 北京律师咨询_知名专业北京律师事务所_免费法律咨询 | 山东石英砂过滤器,除氟过滤器「价格低」-淄博胜达水处理 | 在线浊度仪_悬浮物污泥浓度计_超声波泥位计_污泥界面仪_泥水界面仪-无锡蓝拓仪表科技有限公司 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 国际金融网_每日财经新资讯网 | 垃圾压缩设备_垃圾处理设备_智能移动式垃圾压缩设备--山东明莱环保设备有限公司 | 水性绝缘漆_凡立水_绝缘漆树脂_环保绝缘漆-深圳维特利环保材料有限公司 | 志高装潢官网-苏州老房旧房装修改造-二手房装修翻新 | 制样机-密封锤式破碎机-粉碎机-智能马弗炉-南昌科鑫制样 | TYPE-C厂家|TYPE-C接口|TYPE-C防水母座|TYPE-C贴片-深圳步步精 | 沈阳缠绕包装机厂家直销-沈阳海鹞托盘缠绕包装机价格 | SDI车窗夹力测试仪-KEMKRAFT方向盘测试仪-上海爱泽工业设备有限公司 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 整合营销推广|营销网络推广公司|石家庄网站优化推广公司|智营销 好物生环保网、环保论坛 - 环保人的学习交流平台 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 包头市鑫枫装饰有限公司| 不锈钢水箱生产厂家_消防水箱生产厂家-河南联固供水设备有限公司 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) |