亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Java中利用多線程搶票

發布時間:2021-05-27 18:19:25 來源:億速云 閱讀:267 作者:Leah 欄目:編程語言

怎么在Java中利用多線程搶票?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

局部變量:

  •   定義在方法內,方法運行存在,方法運行結束銷毀,無法保存一個持久化數據!!!

成員變量:

  •   保存在類對象內,創建對象之后存在,對象不銷毀成員變量也不會被內存收回。因為

  •   在每一個類對象中,都存在一個對應的成員變量,這些成員變量不是同一個數據。不是

  •   共享資源,不合適!!!

靜態成員變量:

  •   保存在內存的【數據區】,類文件加載時就存在,并且可以給每一個類對象使用,一處修改

  •   處處受影響!!!作為共享資源非常合適!!!

問題

1. 銷售順序存在異常

2. 存在某一張票被銷售了多次

使用鎖

代碼如下

class SaleThread implements Runnable {

 /**
  * 使用靜態成員變量作為100張票的保存變量,是一個共享資源。
  */
 private static int tickets = 100;

 @Override
 public void run() {

  // 完成售票過程
  while (true) {
   /*
   字符串可以作為鎖對象,因為雙引號包含的字符串不管在代碼中如何運行,有且只有一個
    */
   synchronized ("鎖") {

    try {
     Thread.sleep(500);
    } catch (InterruptedException e) {
     e.printStackTrace();
    }

    if (tickets > 0) {
     System.out.println(Thread.currentThread().getName() + "售出了" + tickets + "張票");
     tickets--;
    } else {
     System.out.println(Thread.currentThread().getName() + "售罄!!!");
     break;
    }
   }
  }
 }
}

public class Demo {
 public static void main(String[] args) {
  Thread t1 = new Thread(new SaleThread(), "售票人員1");
  Thread t2 = new Thread(new SaleThread(), "售票人員2");
  Thread t3 = new Thread(new SaleThread(), "售票人員3");

  t1.start();
  t2.start();
  t3.start();
 }
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

革吉县| 连平县| 浪卡子县| 稷山县| 中方县| 北海市| 长宁县| 武平县| 视频| 安顺市| 黄梅县| 安康市| 沅陵县| 旬邑县| 高邮市| 广宁县| 东光县| 祁门县| 盐源县| 夏河县| 长宁区| 沙洋县| 翁源县| 八宿县| 托里县| 大城县| 黑龙江省| 新巴尔虎左旗| 克山县| 调兵山市| 香港| 德兴市| 北票市| 北川| 奉节县| 龙泉市| 辽阳市| 隆德县| 湘潭市| 萝北县| 宝兴县|