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

溫馨提示×

溫馨提示×

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

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

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

兴城市| 如东县| 古蔺县| 原平市| 晋江市| 霞浦县| 蛟河市| 石屏县| 如东县| 山阳县| 仁化县| 河间市| 绥阳县| 漳浦县| 黄平县| 库伦旗| 连江县| 惠水县| 砚山县| 同心县| 永清县| 阿拉善盟| 东方市| 大余县| 英山县| 汝城县| 湘潭市| 东阿县| 如东县| 永和县| 遂宁市| 禹城市| 宣武区| 德保县| 长丰县| 思南县| 额尔古纳市| 讷河市| 桂林市| 城市| 大同市|