日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Java多線(xiàn)程模擬售票程序和線(xiàn)程安全問(wèn)題

Java中線(xiàn)程部分知識(shí)中,售票程序非常經(jīng)典。程序中也有一些問(wèn)題存在!

旅順口ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!

需求:模擬3個(gè)窗口同時(shí)在售100張票。

問(wèn)題1:為什么100張票被賣(mài)出了300張票?

原因:因?yàn)閠ickets是非靜態(tài)的,非靜態(tài)的成員變量數(shù)據(jù)是在每個(gè)對(duì)象中都會(huì)維護(hù)一份數(shù)據(jù)的,三個(gè)線(xiàn)程對(duì)象就會(huì)有三份。
解決方案:把tickets票數(shù)共享出來(lái)給三個(gè)線(xiàn)程對(duì)象使用。使用static修飾。

問(wèn)題2: 出現(xiàn)了線(xiàn)程安全問(wèn)題 ?

線(xiàn)程安全問(wèn)題的解決方案:sun提供了線(xiàn)程同步機(jī)制讓我們解決這類(lèi)問(wèn)題的。

java線(xiàn)程同步機(jī)制的方式:

方式一:同步代碼塊

方式二:同步函數(shù)

class SellTickets extends Thread{ 
   
  static int tickets=1;//票數(shù) 這里 必須定義為static。不然  非靜態(tài)的成員變量,非靜態(tài)的成員變量數(shù)據(jù)是在每個(gè)對(duì)象中都會(huì)維護(hù)一份數(shù)據(jù)的。三個(gè)線(xiàn)程對(duì)象就會(huì)有三份。 
  public SellTickets(String threadName) { 
    super(threadName); 
  } 
  public void run() { 
    while(true){ 
      synchronized ("鎖") { 
        if(tickets==101){//或者 if(tickets>100){ 
          System.out.println("票已經(jīng)賣(mài)完啦-_-..."); 
          break; 
        } 
        System.out.println(Thread.currentThread().getName()+"賣(mài)了第"+tickets+"號(hào)票"); 
        tickets++; 
        /* 
        if(tickets==101){ //錯(cuò)誤的。當(dāng)ticket==101時(shí),只跳出一個(gè)線(xiàn)程。其它兩個(gè)線(xiàn)程還存在tickets++。 
          break; 
        } 
        /* 
        if(Thread.currentThread().getName().equals("窗口2")){ //窗口2最多只能賣(mài)一張票,就結(jié)束了 
          break; 
        } 
        */ 
      } 
      //System.out.println(Thread.currentThread().getName()+"鎖后..."); 
       
    } 
     
  } 
} 
 
public class Demo4 { 
   
  public static void main(String[] args) { 
    //創(chuàng)建三個(gè)線(xiàn)程對(duì)象,模擬三個(gè)窗口 
    SellTickets s1=new SellTickets("窗口1"); 
    SellTickets s2=new SellTickets("窗口2"); 
    SellTickets s3=new SellTickets("窗口3"); 
    //開(kāi)啟線(xiàn)程售票 
    s1.start(); 
    s2.start(); 
    s3.start(); 
     
    System.out.println("main方法..."); 
  } 
} 

網(wǎng)站題目:Java多線(xiàn)程模擬售票程序和線(xiàn)程安全問(wèn)題
文章地址:http://www.dlmjj.cn/article/ijjjpp.html