火车票购买问题模拟-同步

发布时间:2016-12-7 3:49:21 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"火车票购买问题模拟-同步",主要涉及到火车票购买问题模拟-同步方面的内容,对于火车票购买问题模拟-同步感兴趣的同学可以参考一下。

一   购买火车票线程 package com.cyb.syn; import java.util.List; public class DespoitThread implements Runnable {  public List<String> listHcp;// 火车票资源  public DespoitThread(List<String> listHcp) {   this.listHcp = listHcp;  }  public void run() {   while (true) {    synchronized (listHcp) {     if (listHcp.size() == 0) {      try {       listHcp.wait();// 没有火车票则等待      } catch (InterruptedException e) {       e.printStackTrace();      }     }     listHcp.remove(0);     listHcp.notify();     System.out.println("成功购买一张火车票,剩余票数:" + listHcp.size());    break;//购买完成后,直接退出,让其他购买线程执行。    }   }  } } 二  多人发起购买事件 public class MultiThread {  private List<String> container = new ArrayList<String>();  public final static int MAX = 3;  public static void main(String args[]) {   MultiThread m = new MultiThread();   m.container.add("p1");   m.container.add("p2");   m.container.add("p3");   m.container.add("p4");   m.container.add("p5");   m.container.add("p6");   m.container.add("p7");   m.container.add("p8");//一共八张火车票,现在开启100个线程,100个人购买。   for(int i =1 ;i<=100;i++){    System.out.println("第"+i+"个人准备购买火车票...");    new Thread(new DespoitThread(m.container)).start();        }   } } 三  运行结果 第1个人准备购买火车票... 第2个人准备购买火车票... 成功购买一张火车票,剩余票数:7 成功购买一张火车票,剩余票数:6 第3个人准备购买火车票... 成功购买一张火车票,剩余票数:5 成功购买一张火车票,剩余票数:4 成功购买一张火车票,剩余票数:3 第4个人准备购买火车票... 成功购买一张火车票,剩余票数:2 成功购买一张火车票,剩余票数:1 成功购买一张火车票,剩余票数:0 第5个人准备购买火车票... 第6个人准备购买火车票... 第7个人准备购买火车票... ...  

上一篇:SCSI&nbsp;总线
下一篇:Jar包的正确运行方法

相关文章

相关评论