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

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

java并發編程專題(六)----淺析(JUC)Semaphore

瀏覽:56日期:2022-08-30 08:31:10

半路開始看的朋友可以回顧一下前幾篇

java并發編程專題(一)----線程基礎知識

java并發編程專題(二)----如何創建并運行java線程

java并發編程專題(三)----詳解線程的同步

java并發編程專題(四)----淺談(JUC)Lock鎖

java并發編程專題(五)----詳解(JUC)ReentrantLock

Semaphore,從字面意義上我們知道他是信號量的意思。在java中,一個計數信號量維護了一個許可集。Semaphore 只對可用許可的號碼進行計數,并采取相應的行動。拿到信號量的線程可以進入代碼,否則就等待。通過acquire()和release()獲取和釋放訪問許可。

信號量Semaphore是一個控制訪問多個共享資源的計數器,它本質上是一個“共享鎖”。

Java并發提供了兩種加鎖模式:共享鎖和獨占鎖。前面介紹的ReentrantLock就是獨占鎖。對于獨占鎖而言,它每次只能有一個線程持有,而共享鎖則不同,它允許多個線程并行持有鎖,并發訪問共享資源。

獨占鎖它所采用的是一種悲觀的加鎖策略, 對于寫而言為了避免沖突獨占是必須的,但是對于讀就沒有必要了,因為它不會影響數據的一致性。如果某個只讀線程獲取獨占鎖,則其他讀線程都只能等待了,這種情況下就限制了不必要的并發性,降低了吞吐量。而共享鎖則不同,它放寬了加鎖的條件,采用了樂觀鎖機制,它是允許多個讀線程同時訪問同一個共享資源的。

舉一個生活中的例子,有一條單行道路口有一紅綠燈在正常的綠燈時間內如果騎車速度都很平均只能過去20輛車,這就意味著排在前面的20輛肯定能過去紅綠燈,后面的就只能等下一個綠燈了。但是如果這個時候有車不想過去這個路口它駛向了邊上別的路,那么后面的車就有機會。下面我們來看一個簡單的例子:

public class TestSemaphore { public static void main(String[] args) { final Semaphore semaphore = new Semaphore(5); ExecutorService executorService = Executors.newCachedThreadPool(); for(int i = 0;i<10;i++){ int j = 0; executorService.submit(new A('car'+(j++),semaphore),'Thread'+(j++)); //new Thread(new A('car'+(j++),semaphore),'Thread'+(j++)).start(); if(i == 5){ try { Thread.sleep(1000); System.out.println('最后還有'+semaphore.availablePermits()+'個許可可用'); } catch (InterruptedException e) { e.printStackTrace(); } } } System.out.println('最后還有'+semaphore.availablePermits()+'個許可可用'); } } class A implements Runnable{ String carName; private Semaphore semaphore; public A(String carName, Semaphore semaphore){ this.carName = carName; this.semaphore = semaphore; } public void getWay(){ System.out.println('this car is get the way' + Thread.currentThread().getName()); } public void run() { try { if(semaphore.availablePermits() > 0){ semaphore.acquire(); getWay(); semaphore.release(); }else{ System.out.println('請等待========'); } } catch (InterruptedException e) { e.printStackTrace(); } } }

以上就是java并發編程專題(六)----淺析(JUC)Semaphore的詳細內容,更多關于JAVA Semaphore的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 预制围墙_工程预制围墙_天津市瑞通建筑材料有限公司 | 双菱电缆-广州电缆厂_广州电缆厂有限公司 | 隧道窑炉,隧道窑炉厂家-山东艾瑶国际贸易 | 锥形螺带干燥机(新型耙式干燥机)百科-常州丰能干燥工程 | 南京蜂窝纸箱_南京木托盘_南京纸托盘-南京博恒包装有限公司 | 咖啡加盟-咖啡店加盟-咖啡西餐厅加盟-塞纳左岸咖啡西餐厅官网 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 净化工程_无尘车间_无尘车间装修-广州科凌净化工程有限公司 | 在线钠离子分析仪-硅酸根离子浓度测定仪-油液水分测定仪价格-北京时代新维测控设备有限公司 | 派财经_聚焦数字经济内容服务平台 | 山东钢衬塑罐_管道_反应釜厂家-淄博富邦滚塑防腐设备科技有限公司 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 鄂泉泵业官网|(杭州、上海、全国畅销)大流量防汛排涝泵-LW立式排污泵 | 挨踢网-大家的导航!| 厂房出租_厂房出售_产业园区招商_工业地产&nbsp;-&nbsp;中工招商网 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 股票入门基础知识_股票知识_股票投资大师_格雷厄姆网 | 氟氨基酮、氯硝柳胺、2-氟苯甲酸、异香兰素-新晨化工 | 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | EPDM密封胶条-EPDM密封垫片-EPDM生产厂家| 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | 厦门网站建设_厦门网站设计_小程序开发_网站制作公司【麦格科技】 | 扬尘在线监测系统_工地噪声扬尘检测仪_扬尘监测系统_贝塔射线扬尘监测设备「风途物联网科技」 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 工业硝酸钠,硝酸钠厂家-淄博「文海工贸」 | 北京征地律师,征地拆迁律师,专业拆迁律师,北京拆迁律师,征地纠纷律师,征地诉讼律师,征地拆迁补偿,拆迁律师 - 北京凯诺律师事务所 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 合肥钣金加工-安徽激光切割加工-机箱机柜加工厂家-合肥通快 | 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 温湿度记录纸_圆盘_横河记录纸|霍尼韦尔记录仪-广州汤米斯机电设备有限公司 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 磁力抛光机_磁力研磨机_磁力去毛刺机-冠古设备厂家|维修|租赁【官网】 | 压缩空气冷冻式干燥机_吸附式干燥机_吸干机_沪盛冷干机 | 奥运星-汽车性能网评-提供个性化汽车资讯 |