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

溫馨提示×

溫馨提示×

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

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

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

兴化市| 巴林右旗| 石门县| 元朗区| 苍溪县| 阜新| 冀州市| 巴林右旗| 安徽省| 迁安市| 印江| 曲周县| 腾冲县| 蓬莱市| 和顺县| 府谷县| 如皋市| 康乐县| 新民市| 简阳市| 宁波市| 三原县| 巴彦淖尔市| 松滋市| 双峰县| 桐梓县| 临城县| 同江市| 临沂市| 龙川县| 东明县| 汕尾市| 许昌县| 巢湖市| 宿松县| 巴林左旗| 上高县| 揭阳市| 勃利县| 平泉县| 赫章县|