91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么在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

顺义区| 汨罗市| 准格尔旗| 河北省| 长春市| 连云港市| 洞头县| 瑞安市| 凉山| 甘孜县| 台湾省| 通城县| 嫩江县| 宜兰县| 清新县| 宝清县| 易门县| 额尔古纳市| 瓮安县| 余干县| 兴仁县| 库尔勒市| 虹口区| 威远县| 榆林市| 阜宁县| 修水县| 菏泽市| 察哈| 渭源县| 共和县| 叙永县| 双柏县| 广丰县| 长岛县| 寻乌县| 梅河口市| 江都市| 浪卡子县| 康马县| 六安市|