ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

生产者与消费者模式

来源:网络整理     时间:2016-09-07     关键词:

本篇文章主要介绍了" 生产者与消费者模式",主要涉及到方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 这种设计模式主要的使用场景是JAVA并发中,一个使用阻塞队列实现的Demo(使用链表实现的有界阻塞队列)如下:import java.util.concurre...

这种设计模式主要的使用场景是JAVA并发中,一个使用阻塞队列实现的Demo(使用链表实现的有界阻塞队列)如下:

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

publicclassConsumerAndProducer
{publicstaticvoid main(String[] args)
    {
        //规定一个缓冲区
        BlockingQueue buffer = new LinkedBlockingQueue<>();

        //二者使用同一个缓冲区进行数据的交换new Thread(new Producer(buffer)).start();
        new Thread(new Consumer(buffer)).start();

    }

}

//生产者类,负责生产数据classProducerimplementsRunnable
{public BlockingQueue buffer;

    public Producer(BlockingQueue buffer)
    {
        this.buffer = buffer;
    }

    @Override

    publicvoid run()
    {
        for(int i = 1;i<11;i++)
        {
            try
            {
                System.out.println("Producer + :" + i);
                buffer.put(i);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }

}

//消费者类,负责消费数据classConsumerimplementsRunnable
{public BlockingQueue buffer;

    public Consumer(BlockingQueue buffer)
    {
        this.buffer = buffer;
    }

    @Override
    publicvoid run()
    {
        for(int i = 1;i < 11 ; i++)
        {
            try{
                System.out.println("Consumer - :" + buffer.take());
            }catch(InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }
}     

关于生产者与消费者模式的几个使用场景:

  • 使用线程池来实现生产者与消费者模式:例如,创建N个不同规模的线程池来处理不同性质的任务,比如线程池1负责将数据读到内存之后,交给线程池2里的线程继续处理压缩数据。线程池1主要处理IO密集型任务,线程池2主要处理CPU密集型任务。
  • 上传附件并处理,用户把文件上传到系统后,系统把文件丢到队列里,然后立刻返回告诉用户上传成功,最后消费者再去队列里取出文件去处理等等。

生产者与消费者模式的好处:

  • 简化开发,独立编写生产者和消费者,仅仅需要知道共享对象是谁。
  • 生产者与消费者可以以不同的速度运行。
  • 解耦合。

关于阻塞队列,请看这里。

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了 生产者与消费者模式,包括了方面的内容,希望对Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。

    本文网址链接:http://www.codes51.com/article/detail_3782301.html

    相关图片

    相关文章