最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java多線程模擬售票程序和線程安全問題

 更新時(shí)間:2018年05月20日 15:17:55   作者:syhleo  
本篇文章給大家分享了Java多線程模擬售票程序和線程安全問題的相關(guān)知識(shí)點(diǎn),對(duì)此有興趣的朋友可以參考學(xué)習(xí)下。

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

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

問題1:為什么100張票被賣出了300張票?

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

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

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

java線程同步機(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è)線程對(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)賣完啦-_-..."); 
          break; 
        } 
        System.out.println(Thread.currentThread().getName()+"賣了第"+tickets+"號(hào)票"); 
        tickets++; 
        /* 
        if(tickets==101){ //錯(cuò)誤的。當(dāng)ticket==101時(shí),只跳出一個(gè)線程。其它兩個(gè)線程還存在tickets++。 
          break; 
        } 
        /* 
        if(Thread.currentThread().getName().equals("窗口2")){ //窗口2最多只能賣一張票,就結(jié)束了 
          break; 
        } 
        */ 
      } 
      //System.out.println(Thread.currentThread().getName()+"鎖后..."); 
       
    } 
     
  } 
} 
 
public class Demo4 { 
   
  public static void main(String[] args) { 
    //創(chuàng)建三個(gè)線程對(duì)象,模擬三個(gè)窗口 
    SellTickets s1=new SellTickets("窗口1"); 
    SellTickets s2=new SellTickets("窗口2"); 
    SellTickets s3=new SellTickets("窗口3"); 
    //開啟線程售票 
    s1.start(); 
    s2.start(); 
    s3.start(); 
     
    System.out.println("main方法..."); 
  } 
} 

相關(guān)文章

  • mybatis的動(dòng)態(tài)SQL和模糊查詢實(shí)例詳解

    mybatis的動(dòng)態(tài)SQL和模糊查詢實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于mybatis的動(dòng)態(tài)SQL和模糊查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java定義泛型接口和類的方法實(shí)例分析

    Java定義泛型接口和類的方法實(shí)例分析

    這篇文章主要介紹了Java定義泛型接口和類的方法,結(jié)合實(shí)例形式分析了泛型相關(guān)概念、原理及泛型接口與類的定義實(shí)現(xiàn)方法,需要的朋友可以參考下
    2019-08-08
  • Mybatis-Plus?CRUD操作方法

    Mybatis-Plus?CRUD操作方法

    通用?Service?CRUD?封裝?IService?接口,進(jìn)一步封裝?CRUD?采用?get?查詢、remove?刪除?、list?查詢集合、page?分頁的前綴命名方式區(qū)分?Mapper?層避免混淆,這篇文章主要介紹了Mybatis-Plus?CRUD的相關(guān)知識(shí),需要的朋友可以參考下
    2023-10-10
  • maven加載依賴報(bào)錯(cuò)的原因分析及解決方法

    maven加載依賴報(bào)錯(cuò)的原因分析及解決方法

    通常我們?cè)陧?xiàng)目中引入第三方依賴包時(shí),為了避免其版本迭代問題,經(jīng)常會(huì)使用本地的包,這篇文章主要給大家介紹了關(guān)于maven加載依賴報(bào)錯(cuò)的原因分析及解決方法的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • Java拷貝數(shù)組方法Arrays.copyOf()是地址傳遞的證明實(shí)例

    Java拷貝數(shù)組方法Arrays.copyOf()是地址傳遞的證明實(shí)例

    今天小編就為大家分享一篇關(guān)于Java拷貝數(shù)組方法Arrays.copyOf()是地址傳遞的證明實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • SpringBoot?熱搜與不雅文字過濾的實(shí)現(xiàn)

    SpringBoot?熱搜與不雅文字過濾的實(shí)現(xiàn)

    本文主要介紹了SpringBoot?熱搜與不雅文字過濾的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 徹底解決tomcat中文亂碼問題方案

    徹底解決tomcat中文亂碼問題方案

    這篇文章主要介紹了徹底解決tomcat中文亂碼問題方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • springboot整合Shiro

    springboot整合Shiro

    這篇文章主要介紹了SpringBoot整合Shiro一些方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • java 通過cmd 調(diào)用命令啟動(dòng)tomcat的操作

    java 通過cmd 調(diào)用命令啟動(dòng)tomcat的操作

    這篇文章主要介紹了java 通過cmd 調(diào)用命令啟動(dòng)tomcat的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java使用正則表達(dá)式獲取子文本的方法示例

    Java使用正則表達(dá)式獲取子文本的方法示例

    這篇文章主要介紹了Java使用正則表達(dá)式獲取子文本的方法,結(jié)合實(shí)例形式分析了java針對(duì)子文本的正則操作相關(guān)函數(shù)與使用技巧,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

延吉市| 精河县| 天全县| 石景山区| 南昌县| 新乡市| 杭锦旗| 临夏市| 博罗县| 凌源市| 罗江县| 阿尔山市| 合阳县| 泰来县| 元谋县| 息烽县| 漠河县| 子长县| 彭山县| 舒城县| 万载县| 宣恩县| 淳化县| 石泉县| 攀枝花市| 剑川县| 娄底市| 沐川县| 保康县| 始兴县| 山东省| 陇川县| 自贡市| 龙陵县| 蒲城县| 黑山县| 郴州市| 黎城县| 文山县| 泾源县| 河源市|