A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© cuisq 中级黑马   /  2016-6-11 11:48  /  410 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

写一个卖票的程序。 
1) 写一个类,该类实现了Runnable接口。有一个私有类型的int型的参数:tickets。票
的总数,为100,完成run方法,输出结果的格式如下:  
2) 当前窗口为:窗口a ,剩余的票数为:19,其中窗口a为线程的名称。 3) 开启四个卖票窗口(起四个线程),同时执行卖票的程序。 
public class SellTicketDemo {   public static void main(String[] args) {   SellTicket st = new SellTicket(new Ticket());   new Thread(st,"窗口1").start();   new Thread(st,"窗口2").start();   new Thread(st,"窗口3").start();   new Thread(st,"窗口4").start(); 
 } 
 }  
class SellTicket implements Runnable {  private Ticket t; 
 









黑马程序员入学面试复习 
 public SellTicket(Ticket t) {   this.t = t; 
 } 
  @Override  public void run() {   while (t.getTickets() > 0) {    t.sellTicket(new Random().nextInt(5) + 1); 
  } 
 } 
} //车票类 class Ticket {  private int tickets = 100;//车票的整数是100张   public int getTickets() {//获取车票的余数   return tickets; 
 } 
  public synchronized void sellTicket(int num) {//售票   if (tickets >= num) {    try {     Thread.sleep(100);    } catch (InterruptedException e) { 
    e.printStackTrace(); 
   } 
   tickets -= num; 
   System.out.println(Thread.currentThread().getName() + "卖出" + num     
 
+ "张票,余票为:" + tickets);   } else { 
   try {     Thread.sleep(100);    } catch (InterruptedException e) { 
    e.printStackTrace(); 
   } 
   System.out.println("余票不足"); 
  } 
 } 
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马