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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 209920266 中级黑马   /  2014-12-23 13:48  /  2802 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
class  Ticket implements Runnable
{
   private int tickets=100;
   private Object obj=new Object();
   public void run()
   {
     while(true){
       synchronized(obj){
              if(tickets>0){
                   try{Thread.sleep(10);}catch(InterruptedException e){}
   System.out.println(Thread.currentThread().getName()+"......"+tickets--);
            }
           }   
     }
   }
}
class ThreadDemo{
public static void main(String[]args){
Ticket t=new Ticket();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
t1.start();
t2.start();
}
}
运行结果是底部一直有一个光标闪烁,不能结束线程返回当前目录,求大神帮小弟解决下啊

最佳答案

查看完整内容

你这是看毕老师的第11天视频吧 老毕 运行得到需要的数据好 ctrl+c好像是终止了程序的 你也得终止程序 要不就把 public void run() { while(true){ synchronized(obj){ if(tickets>0){ true改为tickets>0票打完了后while循环就终止了 程序也就执行完了

评分

参与人数 1黑马币 +2 收起 理由
zhaojiajun + 2

查看全部评分

7 个回复

倒序浏览
你这是看毕老师的第11天视频吧  老毕  运行得到需要的数据好 ctrl+c好像是终止了程序的  你也得终止程序 要不就把
public void run()
   {
     while(true){
       synchronized(obj){
              if(tickets>0){
true改为tickets>0票打完了后while循环就终止了 程序也就执行完了
回复 使用道具 举报
你run方法里面的while没有跳出语句,是个死循环,当然就不能停止啦,你要在里面设定一个tickets为0的时候就break,终止循环就行了
回复 使用道具 举报
你的循环条件是true,无限循环的,循环体里面没有结束循环的标志,它会一直循环,当tickers小于o的时候,if语句不执行了,但是循环体还在执行。而计算机运算速度快,所以一直光标闪。
回复 使用道具 举报
你在while循环中放的是true,这样就会变成死循环。死循环里要定义break;满足条件就跳出循环。
回复 使用道具 举报
氛围真不错啊
回复 使用道具 举报
int tickets=100;
循环中一直减,while(ture)是个无限循环,没有结果语句
回复 使用道具 举报
学习啦:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马