中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么用Java模擬多線程實現搶票代碼

發布時間:2021-11-05 16:21:09 來源:億速云 閱讀:391 作者:iii 欄目:編程語言

這篇文章主要介紹“怎么用Java模擬多線程實現搶票代碼”,在日常操作中,相信很多人在怎么用Java模擬多線程實現搶票代碼問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用Java模擬多線程實現搶票代碼”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

實現100張票搶購的demo

這里需要一個變量,來保存100張

局部變量:

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

成員變量:

  保存在類對象內,創建對象之后存在,對象不銷毀成員變量也不會被內存收回。因為  在每一個類對象中,都存在一個對應的成員變量,這些成員變量不是同一個數據。不是  共享資源,不合適!!!

靜態成員變量:

  保存在內存的【數據區】,類文件加載時就存在,并且可以給每一個類對象使用,一處修改  處處受影響!!!作為共享資源非常合適!!!

問題

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(); }}

到此,關于“怎么用Java模擬多線程實現搶票代碼”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

阜南县| 汽车| 泾源县| 通许县| 东乌珠穆沁旗| 合肥市| 海伦市| 汉阴县| 电白县| 阜新| 奉化市| 平昌县| 平顺县| 孟州市| 拉萨市| 永善县| 西和县| 北票市| 庆安县| 清苑县| 专栏| 吉木乃县| 盐城市| 大安市| 友谊县| 承德市| 毕节市| 五莲县| 泗洪县| 城固县| 上饶县| 东乡族自治县| 灌云县| 沾益县| 通州市| 环江| 南漳县| 达日县| 望奎县| 株洲市| 格尔木市|