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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wyasln 中级黑马   /  2015-12-1 15:25  /  879 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

练习多线程时候写的
下面这样写就可以正常执行线程
//消费者
class Consumer implements Runnable
{
        //定义资源
        private SharedRes res;
        //构造方法
        Consumer(SharedRes res)
        {
                this.res = res;
        }
    //重写run()方法
        public void run()
        {
                //消费操作,在有资源时不断调用consume()方法
                while(true)
                {
                        res.consume();                       
                }       
        }
}

但是下面在run()方法里面的while里面几个了判断,怎么这个线程就执行不了呢?
public void run()
        {
                //消费操作,在有资源时不断调用consume()方法
                while(true)
                {
                        if(res.getCount()>0)
                        {
                          res.consume();       
                        }                               
                }       
        }

7 个回复

倒序浏览
哪里有问题
回复 使用道具 举报
不会吧 ! 按照这样的写法,是可以的呀!
回复 使用道具 举报 1 0
顶一下~虽然不明白
回复 使用道具 举报
能不能发完整的代码
回复 使用道具 举报
我觉得是不是res.getCount()>0这里被干掉了?
回复 使用道具 举报
八宝 中级黑马 2015-12-3 21:08:17
7#
你说的执行不了是什么意思,是编译不通过还是线程开启不运行 是不是死锁了,如果多个线程执行同一个资源。又有互斥关系可能会出现死锁呢,能发全的代码吗
回复 使用道具 举报
不明白啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马