您的位置:首页 > 职场人生

《黑马程序员》java笔记->生产消费多线程,同步代码块(优化代码)

2013-06-15 21:07 573 查看
------- android培训java培训、期待与您交流! ----------

/*
等待唤醒机制中经典的问题:生产者消费者问题。
代码已优化 

*/
class Resource
{
    private String name;
    private int count;
    private boolean flag;
    public synchronized void set(String name)
    {
        if(flag)
        try{this.wait();}catch(InterruptedException e){}
        //name,count连着用 
        this.name=name+count;
        count++;
        System.out.println(Thread.currentThread().getName()+"^^^^生产者…………"+this.name);
        flag=true;
        this.notify();
    }
    public synchronized void get()
    {
        if(!flag)
        try{this.wait();}catch(InterruptedException e){}
        System.out.println(Thread.currentThread().getName()+"^^^^消费者…………"+this.name);
        flag=false;
        this.notify();
    }
}
class  Producer implements Runnable
{
    private Resource r;
    Producer(Resource r)
    {
        this.r=r;
    }
    public  void run()
    {
        while(true)
        {
            r.set("馒头");
        }
    }
}
class Consumer implements Runnable
{
    private Resource r;
    Consumer(Resource r)
    {
    this.r=r;
    }
    public void run()
    {
        while(true)
        {
            r.get();
        }
    }
}
class  ProConDemo 
{
    public static void main(String[] args) 
    {
        Resource r=new Resource();
        Producer p=new Producer(r);
        Consumer c=new Consumer(r);
        Thread t1=new Thread(p);
        Thread t2=new Thread(c);
        t1.start();
        t2.start();
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 线程 性能优化