溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么用Java模擬多線程實(shí)現(xiàn)搶票代碼

發(fā)布時(shí)間:2021-11-05 16:21:09 來源:億速云 閱讀:388 作者:iii 欄目:編程語言

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

實(shí)現(xiàn)100張票搶購的demo

這里需要一個(gè)變量,來保存100張

局部變量:

  定義在方法內(nèi),方法運(yùn)行存在,方法運(yùn)行結(jié)束銷毀,無法保存一個(gè)持久化數(shù)據(jù)?。?!

成員變量:

  保存在類對(duì)象內(nèi),創(chuàng)建對(duì)象之后存在,對(duì)象不銷毀成員變量也不會(huì)被內(nèi)存收回。因?yàn)椤 ≡诿恳粋€(gè)類對(duì)象中,都存在一個(gè)對(duì)應(yīng)的成員變量,這些成員變量不是同一個(gè)數(shù)據(jù)。不是  共享資源,不合適?。?!

靜態(tài)成員變量:

  保存在內(nèi)存的【數(shù)據(jù)區(qū)】,類文件加載時(shí)就存在,并且可以給每一個(gè)類對(duì)象使用,一處修改  處處受影響!?。∽鳛楣蚕碣Y源非常合適?。?!

問題

1. 銷售順序存在異常

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

使用鎖

代碼如下

class SaleThread implements Runnable { /**  * 使用靜態(tài)成員變量作為100張票的保存變量,是一個(gè)共享資源。  */ private static int tickets = 100; @Override public void run() {  // 完成售票過程  while (true) {   /*   字符串可以作為鎖對(duì)象,因?yàn)殡p引號(hào)包含的字符串不管在代碼中如何運(yùn)行,有且只有一個(gè)    */   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(); }}

到此,關(guān)于“怎么用Java模擬多線程實(shí)現(xiàn)搶票代碼”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI