成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java多線程模擬售票程序和線程安全問題

Java中線程部分知識中,售票程序非常經(jīng)典。程序中也有一些問題存在!

旅順口ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

需求:模擬3個窗口同時在售100張票。

問題1:為什么100張票被賣出了300張票?

原因:因為tickets是非靜態(tài)的,非靜態(tài)的成員變量數(shù)據(jù)是在每個對象中都會維護一份數(shù)據(jù)的,三個線程對象就會有三份。
解決方案:把tickets票數(shù)共享出來給三個線程對象使用。使用static修飾。

問題2: 出現(xiàn)了線程安全問題 ?

線程安全問題的解決方案:sun提供了線程同步機制讓我們解決這類問題的。

java線程同步機制的方式:

方式一:同步代碼塊

方式二:同步函數(shù)

class SellTickets extends Thread{ 
   
  static int tickets=1;//票數(shù) 這里 必須定義為static。不然  非靜態(tài)的成員變量,非靜態(tài)的成員變量數(shù)據(jù)是在每個對象中都會維護一份數(shù)據(jù)的。三個線程對象就會有三份。 
  public SellTickets(String threadName) { 
    super(threadName); 
  } 
  public void run() { 
    while(true){ 
      synchronized ("鎖") { 
        if(tickets==101){//或者 if(tickets>100){ 
          System.out.println("票已經(jīng)賣完啦-_-..."); 
          break; 
        } 
        System.out.println(Thread.currentThread().getName()+"賣了第"+tickets+"號票"); 
        tickets++; 
        /* 
        if(tickets==101){ //錯誤的。當ticket==101時,只跳出一個線程。其它兩個線程還存在tickets++。 
          break; 
        } 
        /* 
        if(Thread.currentThread().getName().equals("窗口2")){ //窗口2最多只能賣一張票,就結(jié)束了 
          break; 
        } 
        */ 
      } 
      //System.out.println(Thread.currentThread().getName()+"鎖后..."); 
       
    } 
     
  } 
} 
 
public class Demo4 { 
   
  public static void main(String[] args) { 
    //創(chuàng)建三個線程對象,模擬三個窗口 
    SellTickets s1=new SellTickets("窗口1"); 
    SellTickets s2=new SellTickets("窗口2"); 
    SellTickets s3=new SellTickets("窗口3"); 
    //開啟線程售票 
    s1.start(); 
    s2.start(); 
    s3.start(); 
     
    System.out.println("main方法..."); 
  } 
} 

當前題目:Java多線程模擬售票程序和線程安全問題
鏈接地址:http://jinyejixie.com/article38/ijjjpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、企業(yè)網(wǎng)站制作、手機網(wǎng)站建設(shè)、網(wǎng)站維護、網(wǎng)站設(shè)計網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
库尔勒市| 乌拉特中旗| 兰考县| 太湖县| 金寨县| 乳源| 昌吉市| 六盘水市| 洪洞县| 修水县| 镇原县| 化隆| 山阴县| 农安县| 搜索| 班戈县| 邹平县| 武夷山市| 濮阳县| 康平县| 涞源县| 营山县| 定陶县| 玛纳斯县| 钟祥市| 阿克苏市| 筠连县| 盱眙县| 吉水县| 双柏县| 曲阳县| 朝阳市| 淳安县| 巢湖市| 徐闻县| 阿瓦提县| 甘南县| 信阳市| 汉源县| 乐至县| 镇平县|