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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© L1ub0w3n 中级黑马   /  2016-6-17 23:06  /  1190 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
* 有一辆班车除司机外只能承载70个人,假设前后两个车门都能上车,如果坐满则不能再上车。
* 请用线程模拟上车过程并且在控制台打印出是从哪个车门上车以及剩下的座位数。(10分)
* 比如:(从前门上车---还剩N个座位)
*/

点评

不错  发表于 2016-7-14 23:05

评分

参与人数 1黑马币 +5 收起 理由
ylw787442926 + 5 赞一个!

查看全部评分

17 个回复

倒序浏览
  1. public class Ticket implements Runnable{
  2.        
  3.         //定义车上总共的座位数量
  4.         int x = 70;
  5.         Object lock = new Object();
  6.        
  7.         @Override
  8.         public void run() {
  9.                 while (true) {
  10.                         //上锁
  11.                         synchronized (lock) {
  12.                                 if (x>=0) {
  13.                                         System.out.println("从"+Thread.currentThread().getName()+"上车,还有"+(x--)+"个座位。");       
  14.                                         }
  15.                                 }
  16.                         }
  17.                 }
  18.         }       

  19. public class Test02 {
  20.         public static void main(String[] args) {
  21.                 // 创建票对象
  22.                 Ticket t = new Ticket();
  23.                
  24.                 //实例化上车的两个门[双线程]
  25.                 Thread t1 = new Thread(t,"前门");
  26.                 Thread t2 = new Thread(t,"后门");
  27.                
  28.                 //开启线程
  29.                 t1.start();
  30.                 t2.start();
  31.         }
  32. }
复制代码
回复 使用道具 举报
liuliuliu  你这么6 咋不飞呢
回复 使用道具 举报
学习,学习,学习!
回复 使用道具 举报
楼主好人
回复 使用道具 举报
赞一个  受教了
回复 使用道具 举报
本帖最后由 戎马生涯 于 2016-6-18 16:46 编辑

public class Test{        
               public static void main(String[] args) {                 
                                     Car car = new Car();               
                                     new Thread(car,"前门").start();                 
                                     new Thread(car,"后门").start();        
                   }
}
class Car implements Runnable {         
                private int seats = 70;        
                         @Override        
                          public void run() {               
                                      while(true) {                        
                                                   synchronized (this) {                              
                                                        if(seats<=0)                                       
                                                                        break;                                 
                                                     try {                                       
                                                               Thread.sleep(10);                              
                                                    } catch (InterruptedException e) {                                       
                                                                    e.printStackTrace();                                
                                                                 }                                
                                                                   System.out.println(Thread.currentThread().getName()+"上车---还剩"+(--seats)+"个座...");                     
                                                        }               
                                             }        
                       }      
  }
回复 使用道具 举报
好人好人,大好人
回复 使用道具 举报
还没写多线程,看得好晕{:2_41:}
回复 使用道具 举报
学习学习
回复 使用道具 举报
这要是机考那还好,要是手写代码那可就!!!
回复 使用道具 举报
学习学习         
回复 使用道具 举报
666666666虽然还没学线程,但是看着也很66
回复 使用道具 举报
赞赞赞赞赞
回复 使用道具 举报
没学到多线程,还不懂
回复 使用道具 举报
这么好的例子需要分享,让更多人学习!
回复 使用道具 举报
还有注释,真是答案....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马