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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

4黑马币
我的脑子今天看的快爆炸了,已经找不出问题所在了,大神帮忙指出下
  1. class Resource
  2. {
  3.         private String name;
  4.         private int count = 1;
  5.         private boolean flag = false;

  6.         public synchronized void set(String name)
  7.         {
  8.                 if (flag)
  9.                 {
  10.                         try
  11.                         {
  12.                                 wait();
  13.                         }
  14.                         catch (InterruptedException e)
  15.                         {
  16.                                 e.printStackTrace();
  17.                         }

  18.                         this.name = name+count;
  19.                         count++;
  20.                         System.out.println(Thread.currentThread().getName()+"....生产者"+this.name);
  21.                         flag = true;
  22.                         notify();
  23.                 }
  24.         }

  25.         public synchronized void out()
  26.         {
  27.                 if (!flag)
  28.                 {
  29.                         try
  30.                         {
  31.                                 wait();
  32.                         }
  33.                         catch (InterruptedException e)
  34.                         {
  35.                                 e.printStackTrace();
  36.                         }
  37.                         flag = false;
  38.                         notify();
  39.                         System.out.println(Thread.currentThread().getName()+".............消费者"+this.name);
  40.                 }
  41.         }
  42. }

  43. //输入
  44. class Producer implements Runnable
  45. {
  46.         private Resource r;
  47.         Producer(Resource r)
  48.         {
  49.                 this.r = r;
  50.         }

  51.         public void run()
  52.         {
  53.                 while (true)
  54.                 {
  55.                         r.set("烤鸭");
  56.                 }
  57.         }
  58. }


  59. //shuchu
  60. class Consumer implements Runnable
  61. {
  62.         private Resource r;
  63.         Consumer(Resource r)
  64.         {
  65.                 this.r = r;
  66.         }
  67.         public void run()
  68.         {
  69.                 while (true)
  70.                 {
  71.                         r.out();
  72.                 }
  73.         }
  74. }



  75. class  IntOutputTest
  76. {
  77.         public static void main(String[] args)
  78.         {
  79.                 Resource r = new Resource();

  80.                 Producer pro = new Producer(r);
  81.                 Consumer con = new Consumer(r);

  82.                 Thread t1 = new Thread(pro);
  83.                 Thread t2 = new Thread(pro);
  84.                 Thread t3 = new Thread(con);
  85.                 Thread t4 = new Thread(con);

  86.                 t1.start();
  87.                 t2.start();
  88.                 t3.start();
  89.                 t4.start();

  90.         }
  91. }
复制代码

能编译运行没结果,不晓得怎么回事了,我是白天看的视频,晚上自己敲了次,搞不出结果,按照视频又改了次还是没用

24 个回复

正序浏览
求黑马币
回复 使用道具 举报
兄弟我改良了下你的代码可以更清晰的看到变化你那一下count就蹦到30000多了云里雾里的

package product_custom;

class Resource extends Thread
{   
        private String name;
        private int count=0;
        private boolean flag = false;

        public synchronized void set(String name)
        {
           
                if (flag)
                {
                        try
                        {       Resource.sleep(100);
                                    wait();
                              
                              
                        }
                        catch (InterruptedException e)
                        {
                                e.printStackTrace();
                        }
                  }
                count++;
                this.name = name;
               
                System.out.println(Thread.currentThread().getName()+"....生产者生产"+this.name+count);
                flag = true;
                notify();
                       
        }

        public synchronized void out()
        {
               
                if (!flag)
                {
                        try
                        {
                                  Resource.sleep(100);
                              wait();
                        }
                        catch (InterruptedException e)
                        {
                                e.printStackTrace();
                        }
                        
                     
                }
                       
                System.out.println(Thread.currentThread().getName()+"........消费"+this.name+count);
                flag = false;
                notify();
               
        }
}

//输入
class Producer implements Runnable
{
        private Resource r;
        Producer(Resource r)
        {
                this.r = r;
        }

        public void run()
        {
                while (true)
                {
                        r.set("烤鸭");
                }
        }
}


//shuchu
class Consumer implements Runnable
{
        private Resource r;
        Consumer(Resource r)
        {
                this.r = r;
        }
        public void run()
        {
                while (true)
                {
                        r.out();
                }
        }
}



class  IntOutputTest
{   
        public static void main(String[] args)
        {
                Resource r = new Resource();

                Producer pro = new Producer(r);
                Consumer con = new Consumer(r);

                Thread t1 = new Thread(pro,"第一个生产者 ");
                Thread t2 = new Thread(pro,"第二个生产者");
                Thread t3 = new Thread(con,"第一个消费者");
                Thread t4 = new Thread(con,"第二个消费者");

                t1.start();
                t2.start();
                t3.start();
                t4.start();

        }
}
回复 使用道具 举报
类都在一个文件……
回复 使用道具 举报
class Resource
{
        private String name;
        private int count = 1;
        private boolean flag = false;

        public synchronized void set(String name)
        {
                while (flag)
               
                        try
                        {
                                this.wait();
                        }
                        catch (InterruptedException e)
                        {
                                e.printStackTrace();
                        }

                        this.name = name+count;
                        count++;
                        System.out.println(Thread.currentThread().getName()+"....生产者"+this.name);
                        flag = true;
                        notifyAll();
               
        }

        public synchronized void out()
        {
               while(!flag)
               
                        try
                        {
                                this.wait();
                        }
                        catch (InterruptedException e)
                        {
                                e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName()+".............消费

者"+this.name);
                        flag = false;
                        notifyAll();
                        
               
        }
}

//输入
class Producer implements Runnable
{
        private Resource r;
        Producer(Resource r)
        {
                this.r = r;
        }

        public void run()
        {
                while (true)
                {
                        r.set("烤鸭");
                }
        }
}


//shuchu
class Consumer implements Runnable
{
        private Resource r;
        Consumer(Resource r)
        {
                this.r = r;
        }
        public void run()
        {
                while (true)
                {
                        r.out();
                }
        }
}



class  IntOutputTest
{
        public static void main(String[] args)
        {
                Resource r = new Resource();

                Producer pro = new Producer(r);
                Consumer con = new Consumer(r);

                Thread t1 = new Thread(pro);
                Thread t2 = new Thread(pro);
                Thread t3 = new Thread(con);
                Thread t4 = new Thread(con);

                t1.start();
                t2.start();
                t3.start();
                t4.start();

        }
}
这个吧
回复 使用道具 举报
看看                  
回复 使用道具 举报
yyyyyyyyqs 发表于 2015-6-26 21:14
求你加注释。。。

这个练习前几天练了几次,这是当检测的就没加,你看视频会看到这个程序的e
回复 使用道具 举报
求你加注释。。。
回复 使用道具 举报
czf小耗子 发表于 2015-6-26 19:30
你都是在自学吗?你以后是走什么方向的呀

学安卓洛,有什么方向,毕业出去还不是程序员,以后以后就再说把
回复 使用道具 举报
你都是在自学吗?你以后是走什么方向的呀
回复 使用道具 举报
zzh1026 发表于 2015-6-26 12:58
我也想用EditPlus,能不能给个网址什么的?想下载个好用的中文班的

随便百度个,这年代找个小软件还不容易
回复 使用道具 举报
linp007 发表于 2015-6-25 22:17
我现在用的EditPlus,下了eclipse准备果断时间用,看你自己想法,你要用eclipse 的话这有个教程:

http: ...

我也想用EditPlus,能不能给个网址什么的?想下载个好用的中文班的
回复 使用道具 举报
看起来好厉害啊。
回复 使用道具 举报
zzh1026 发表于 2015-6-25 20:44
楼主,我想问一下这个编写Java程序的软件是什么啊,你用的是什么软件编写的? ...

我现在用的EditPlus,下了eclipse准备果断时间用,看你自己想法,你要用eclipse 的话这有个教程:

http://bbs.itheima.com/thread-106859-1-1.html
回复 使用道具 举报
楼主,我想问一下这个编写Java程序的软件是什么啊,你用的是什么软件编写的?
回复 使用道具 举报
debug一下,看一下,线程是比较乱
回复 使用道具 举报
debug一下,看一下,线程是比较乱
回复 使用道具 举报
加油啊,累了亲一口仙人掌,神马问题都不是问题
回复 使用道具 举报
呵呵哒,加油 啊兄弟

评分

参与人数 1黑马币 +6 收起 理由
linp007 + 6 一起加油兄弟

查看全部评分

回复 使用道具 举报
然而我还不会
回复 使用道具 举报

慢慢来,熟悉了就没事了!加油!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马