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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

同步方法及同步代码块

發(fā)布時間:2024/9/27 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 同步方法及同步代码块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

synchronized方法和synchronized塊

synchronized方法必須獲得對象的鎖才能執(zhí)行,否則線程阻塞,方法一旦執(zhí)行,就獨(dú)占此鎖,直到方法返回才釋放鎖,后面被阻塞的線程才能獲得這個鎖,繼續(xù)執(zhí)行

synchronized會影響效率

同步塊synchronized(Obj){},Obj是同步監(jiān)聽器,第一個線程訪問,所定Obj,完后解鎖Obj,第二個才能訪問

同步方法弊端:方法里面需要修改的內(nèi)容才需要鎖,鎖的太多,浪費(fèi)資源

package com.wuming.syn.synch; //不安全的買票 public class UnSafeBuyTicket {public static void main(String[] args) {BuyTicket station = new BuyTicket();new Thread(station,"苦逼的我").start();new Thread(station,"牛逼的你們").start();new Thread(station,"可惡的黃牛黨").start();} }class BuyTicket implements Runnable{//票private int ticketNums=10;boolean flag=true;//停止方式/*** When an object implementing interface <code>Runnable</code> is used* to create a thread, starting the thread causes the object's* <code>run</code> method to be called in that separately executing* thread.* <p>* The general contract of the method <code>run</code> is that it may* take any action whatsoever.** @see Thread#run()*/@Overridepublic void run() {//買票while(flag){try {buy();} catch (InterruptedException e) {e.printStackTrace();}}}//synchronized同步方法,鎖的是this BuyTicketprivate synchronized void buy() throws InterruptedException {//判斷是否有票if (ticketNums<=0){flag=false;return;}//模擬延時Thread.sleep(100);//買票System.out.println(Thread.currentThread().getName()+"拿到"+ticketNums--);//加了synchronized,安全/* 苦逼的我拿到10可惡的黃牛黨拿到9可惡的黃牛黨拿到8牛逼的你們拿到7可惡的黃牛黨拿到6苦逼的我拿到5苦逼的我拿到4可惡的黃牛黨拿到3牛逼的你們拿到2可惡的黃牛黨拿到1*/} }

===============

package com.wuming.syn; //不安全的取錢 //兩個人去銀行取錢,賬戶 public class UnSafeBank {public static void main(String[] args) {//賬戶Account account = new Account(100,"結(jié)婚基金");Drawing you = new Drawing(account,50,"你");Drawing girlFriend = new Drawing(account,100,"girlFriend");you.start();girlFriend.start();}} //賬戶 class Account{int money;//余額String name;//卡名public Account(int money, String name) {this.money = money;this.name = name;} }//銀行,模擬取款 class Drawing extends Thread{Account account;//賬戶//取了多少錢int drawingMoney;//現(xiàn)在手里有多少錢int nowMoney;public Drawing(Account account, int drawingMoney, String name) {super(name);//線程namethis.account = account;this.drawingMoney = drawingMoney;this.nowMoney = nowMoney;} //取錢//synchronized默認(rèn)鎖的是本身@Overridepublic void run() {//鎖的對象是變化的量,增刪改;改成this就是指銀行,線程不安全如下/* 結(jié)婚基金余額為:-50結(jié)婚基金余額為:-50你手里的錢50girlFriend手里的錢100*/synchronized (account){//判斷有沒有錢if(account.money-drawingMoney<0){System.out.println(Thread.currentThread().getName()+"錢不夠,取不了");return;}//sleep可以放大問題的發(fā)生性try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//卡內(nèi)余額=余額-你取的錢account.money=account.money-drawingMoney;//你手里的錢nowMoney=nowMoney+drawingMoney;System.out.println(account.name+"余額為:"+account.money);//Thread.currentThread().getName()=this.getName();System.out.println(this.getName()+"手里的錢"+nowMoney);}//使用同步塊 synchronized (account),線程安全/* 結(jié)婚基金余額為:50你手里的錢50girlFriend錢不夠,取不了*/} }

===============

package com.wuming.syn.synch;import java.util.ArrayList; import java.util.List;//線程不安全的集合 public class UnsafeList {public static void main(String[] args) {List<String> list=new ArrayList<String>();for (int i = 0; i < 10000; i++) {new Thread(()->{synchronized (list){//線程安全list.add(Thread.currentThread().getName());}}).start();}try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(list.size());//每次運(yùn)行都不夠10000,線程不安全,兩個線程同時操作同一個位置,//兩個數(shù)組添加到同一個位置,就會覆蓋掉,元素就會少} }

10000

總結(jié)

以上是生活随笔為你收集整理的同步方法及同步代码块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产视频第二页 | 中文字幕av亚洲精品一部二部 | 第一av | 久久久久久久久久91 | 麻豆一级片| 在线观看理论片 | av永久免费观看 | 日韩一区二区三区免费 | 国产高潮呻吟久久 | 一级中国毛片 | 九九免费 | 一级少妇毛片 | 免费黄片毛片 | 国产中年熟女高潮大集合 | 成人免费激情视频 | 午夜精品免费观看 | 99久久久国产精品无码网爆 | 综合久久中文字幕 | 四虎8848 | 成人在线短视频 | 亚洲免费观看高清完整版在线 | 韩国av在线免费观看 | 欧美日韩三级在线观看 | 亚洲欧美变态另类丝袜第一区 | 欧美中字| 中文字幕一区二区人妻在线不卡 | av网站导航| 美女av一区二区 | 婷婷六月综合 | 人妻在卧室被老板疯狂进入 | 欧美日韩一级片在线观看 | 日韩av日韩 | 台湾黄色网址 | 69av片| 欧美不卡高清 | 污网站在线播放 | mm131在线| 91国产视频在线 | 久久夜精 | 欧美调教视频 | 亚洲黄色免费视频 | 天堂视频在线免费观看 | 四虎永久免费地址 | 五月天久久婷婷 | 奶波霸巨乳一二三区乳 | 永久在线观看 | 韩国bj大尺度vip福利网站 | 在线亚洲网站 | 美女色av | 国产女人呻吟高潮抽搐声 | www.999av | 国产无遮挡又黄又爽 | 总裁边开会边做小娇妻h | 久久看毛片 | 一本到在线 | 亚洲毛片久久 | 成人性视频sm. | 亚洲国产欧美一区二区三区深喉 | 国产精品自拍在线观看 | 男男全肉变态重口高h | 久久久久久久久久久97 | 99精品一区 | 懂色av蜜臀av粉嫩av分享吧最新章节 | 精品在线一区 | 在线播放精品视频 | 美女脱了内裤喂我喝尿视频 | 精品久久久久久久久久久国产字幕 | 好吊操精品视频 | 日本精品视频在线观看 | 色妺妺视频网 | 日韩v在线| 性五月天 | 色爽视频 | av一区二区在线播放 | 欧美中日韩在线 | 一道本在线观看视频 | 中文天堂网 | 国产人妻人伦精品1国产盗摄 | 第四色男人天堂 | 96福利视频 | 亚洲av无码一区二区乱孑伦as | 成人va在线观看 | youjizz亚洲女人 | 国产福利视频 | 超碰v | 日韩一级片 | 欧美黑人精品一区二区不卡 | 日韩欧美午夜 | 91九色精品| 国产特黄aaaaa毛片 | 国产又黄又猛 | 成人午夜视频精品一区 | 免费观看av毛片 | 激情视频一区 | 99这里只有 | av第下页 | 欧美日韩国产精品一区 | 亚洲欧美另类激情 | 天堂在线中文字幕 |