自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

代碼分享:模擬售票 學(xué)習(xí)多線程

開發(fā) 后端
一段簡單的火車票Java編程代碼,主要是加強(qiáng)多線程的學(xué)習(xí)。

【代碼說明】

假設(shè)有火車票100張,創(chuàng)建10個(gè)線程模擬10個(gè)售票點(diǎn),每個(gè)售票點(diǎn)100毫秒賣一張票。 打印出售票過程,注意使用synchronized確保同一張票只能賣出一次。輸出格式如下:

第4售票點(diǎn)賣出第100張票

第2售票點(diǎn)賣出第101張票 ……


【代碼片段】

  1. class T4E02   
  2. {  
  3.     public static void main(String[] args)   
  4.     {  
  5.         Resource rs = new Resource(100);  
  6.  
  7.         for (int i=0;i<10 ;i++ )  
  8.         {  
  9.             new Thread(new Seller(i,rs)).start();  
  10.         }  
  11.     }  
  12. }  
  13. /**  
  14.  *  資源類  
  15.  *  定義了票的總數(shù),和同步了的售票方法  
  16.  */ 
  17. class Resource  
  18. {  
  19.     int ticketNum = 50;  
  20.     boolean flag = false ; // 定義票是否賣完  
  21.  
  22.     public Resource(){}  
  23.     public Resource(int num)  
  24.     {  
  25.         this.ticketNum = num;  
  26.     }  
  27.  
  28.     public synchronized void sellTicket(Seller s)  
  29.     {  
  30.         if (ticketNum > 0)  
  31.         {  
  32.             System.out.println("第" + s.num + "售票點(diǎn)賣出了第" + ticketNum + "張票……");  
  33.             ticketNum--;  
  34.         }  
  35.         else   
  36.         {  
  37.             flag = true;  
  38.         }  
  39.     }  
  40. }  
  41. /**  
  42.  *  售票點(diǎn)類  
  43.  *    
  44.  */ 
  45. class Seller implements Runnable  
  46. {  
  47.     int num;  
  48.     Resource rs;  
  49.  
  50.     public Seller(int num,Resource rs)  
  51.     {  
  52.         this.num = num;  
  53.         this.rs = rs;  
  54.     }  
  55.  
  56.     public final void run()  
  57.     {  
  58.         while (!rs.flag)  
  59.         {  
  60.             /**  
  61.              *  調(diào)用資源類的同步方法  
  62.              */   
  63.             rs.sellTicket(this);   
  64.  
  65.             try 
  66.             {  
  67.                 Thread.sleep(100);  
  68.             }  
  69.             catch (InterruptedException e)  
  70.             {  
  71.                 e.printStackTrace();  
  72.             }  
  73.         }  
  74.     }  

 


【圖片效果】

原文鏈接:http://www.oschina.net/code/snippet_85011_6481

【編輯推薦】

  1. 用Java GUI編寫的畫板程序
  2. Java中帶復(fù)選框的樹的實(shí)現(xiàn)和應(yīng)用
  3. 制作完整的Java可執(zhí)行文件
  4. 10個(gè)強(qiáng)大的JavaScript表單驗(yàn)證插件
  5. Java網(wǎng)絡(luò)編程菜鳥進(jìn)階:TCP和套接字入門
責(zé)任編輯:林師授 來源: 開源中國社區(qū)
相關(guān)推薦

2010-07-26 13:27:19

Perl多線程

2009-10-23 09:26:09

VB.NET多線程

2009-06-11 10:48:53

Java多線程

2009-06-11 10:22:18

Java多線程

2010-02-04 10:19:39

C++多線程

2011-08-18 17:07:23

IOS開發(fā)多線程NSInvocatio

2009-08-03 11:07:18

Scala Actor

2009-08-28 16:43:57

C#多線程學(xué)習(xí)

2010-03-17 15:45:06

Java多線程求和

2010-03-17 19:24:38

Java多線程循環(huán)

2009-07-17 17:29:13

多任務(wù)多線程

2009-08-26 18:13:55

C#多線程lock

2009-03-12 10:52:43

Java線程多線程

2021-04-28 08:00:16

多線程高并發(fā)操作

2019-07-15 16:10:00

技術(shù)研發(fā)指標(biāo)

2020-03-12 10:16:45

代碼Java多線程

2010-03-17 09:33:30

Java多線程方案

2010-01-08 10:48:05

VB.NET多線程

2020-04-07 11:10:30

Python數(shù)據(jù)線程

2024-01-15 10:55:40

Python多線程開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)