国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Thread-synchronized同步 -火車票實例

2019-11-06 06:22:41
字體:
來源:轉載
供稿:網友

線程安全問題產生的原因: 1,多個線程在操作共享的數據。 2,操作共享數據的線程代碼有多條。 當一個線程在執行操作共享數據的多條代碼過程中,其他線程參與了運算。就會導致線程安全問題的產生。

解決思路; 就是將多條操作共享數據的線程代碼封裝起來,當有線程在執行這些代碼的時候,其他線程時不可以參與運算的。 必須要當前線程把這些代碼都執行完畢后,其他線程才可以參與運算。 在java中,用同步代碼塊就可以解決這個問題。

同步代碼塊的格式:

synchronized(對象){需要被同步的代碼 ;}

同步的好處:解決了線程的安全問題。 同步的弊端:相對降低了效率,因為同步外的線程的都會判斷同步鎖。 同步的前提:同步中必須有多個線程并使用同一個鎖。

例1:多個窗口購買火車票實例:

package day04;public class JavaTest { public static void main(String[] args) { SaleTicket st=new SaleTicket(); Thread t1=new Thread(st,"一號窗口"); Thread t2=new Thread(st,"二號窗口"); Thread t3=new Thread(st,"三號窗口"); Thread t4=new Thread(st,"四號窗口"); t1.start(); t2.start(); t3.start(); t4.start(); }}class SaleTicket implements Runnable{//sale英 [se?l] n.拍賣;賣,出賣; PRivate int tickets=100; @Override public void run() { while(tickets>0){ sale(); } } private synchronized void sale(){//synchronized 同步。 if(tickets>0){ System.out.println(Thread.currentThread().getName()+"賣出了第"+(100-tickets+1)+"張票"); tickets --; try{ Thread.sleep(500);//假設購票過程需要500毫秒。 }catch(InterruptedException e){ e.printStackTrace(); } } }}

運行結果:

一號窗口賣出了第1張票四號窗口賣出了第2張票二號窗口賣出了第3張票三號窗口賣出了第4張票三號窗口賣出了第5張票.................四號窗口賣出了第99張票四號窗口賣出了第100張票
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 义马市| 泗洪县| 蓬溪县| 宜宾县| 乐都县| 双牌县| 安徽省| 榆中县| 古交市| 临沭县| 莆田市| 永安市| 积石山| 石嘴山市| 荃湾区| 长顺县| 原阳县| 洞头县| 梅州市| 景谷| 鄢陵县| 马山县| 灌阳县| 德江县| 东乡| 江孜县| 大兴区| 高阳县| 霍州市| 石城县| SHOW| 昔阳县| 嵊泗县| 景宁| 砚山县| 读书| 土默特右旗| 天等县| 涿鹿县| 唐海县| 桃园县|