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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看看                  
回复 使用道具 举报
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();

        }
}
这个吧
回复 使用道具 举报
类都在一个文件……
回复 使用道具 举报
兄弟我改良了下你的代码可以更清晰的看到变化你那一下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();

        }
}
回复 使用道具 举报
求黑马币
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马