Java 多線程練習7:模擬網絡購票


需求:

 

 1 package GouPiao;
 2 
 3 /**
 4  * 模擬網絡延時線程不安全 
 5  */
 6 public class Site implements Runnable {
 7     private int count = 10; // 記錄剩余票數
 8     private int num = 0; // 記錄買到第幾張票
 9     private boolean flag = false;  //記錄是否售完
10 
11     public void run() {
12         while (true) {
13             if(!sale()){
14             break;
15             }
16         }        
17     }
18     // 同步方法:賣票
19     public synchronized boolean sale() {    
20         if (count <= 0) {
21             return false;
22         }
23         // 第一步:修改數據
24         num++;
25         count--;
26         try {
27             Thread.sleep(500); // 模擬網絡延時
28         } catch (InterruptedException e) {
29             e.printStackTrace();
30         }
31         // 第二步:顯示信息
32         System.out.println(Thread.currentThread().getName() + "搶到第" + num
33                 + "張票,剩余" + count + "張票!");
34        if(Thread.currentThread().getName().equals("黃牛黨")){
35            return false;
36        }
37        return true;
38         
39     }
40 }
Site
 1 package GouPiao;
 2 /*
 3  *測試類 
 4  * 
 5  */
 6  
 7 public class Test {
 8     public static void main(String[] args) {
 9         Site site = new Site();
10         Thread person1= new Thread(site,"桃跑跑");
11         Thread person2= new Thread(site,"張票票");
12         Thread person3= new Thread(site,"黃牛黨");
13         person1.start();
14         person2.start();
15         person3.start();
16     }
17 }
Test

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM