Java 使用线程经验之阻塞队列

我们在java项目开发中不可避免的,总是要使用大量的线程去帮助我们处理程序,这里mark一下,线程池的使用可以有效的帮助我们降低cpu的工作负担;同时我们也会去关心这些线程的执行顺序,执行结果的返回等等,这里就涉及到了线程的管理。

阻塞队列在这里就不做过多的解释,网上有很多,在这里就浅谈一下个人对阻塞队列使用的看法。
在java各类框架中,我们不可避免的会创建一个这样的功能,点击一个button,产生一个请求,再次点击,再次产生请求;这时我们就可以通过把这些请求加入到请求队列中来对他们进行管理;

设计框架:新建一个阻塞队列,一个线程(负责处理事务),产生的请求加入到队列中去,如果处理的事情的线程正在运行,则等到正在处理的线程处理完在出队。如此就可以对一些请求集合做出可控的管理。

个人觉得阻塞队列之所以可以这样使用,是因为本质上他的实现与生产者消费者有同功之妙;即内部通过notify,singal来实现线程间的通信,实现正确的出队入队。

基本用法如下:

 public static void main(String[]args)
    {
        final BlockingQueue queue=new ArrayBlockingQueue(3);
        for (int i=0;i<=2;i++)
        {
            new Thread()
            {
                public void run(){
                    while (true)
                    {
                        try{
                            Thread.sleep(5000);
                            //To do something
                            queue.put(1);
                        }catch (InterruptedException e)
                        {
                            e.printStackTrace();
                        }
                    }
                }
            }.start();

            //start two thread
            new Thread(){
                public void run(){
                    while (true){
                        try {
                            Thread.sleep(10000);
                           //To do something
                           quene.take()
                        }
                        catch (InterruptedException e)
                        {
                            e.printStackTrace();
                        }
                    }

                }

            }.start();


        }
    }

接下来补充java多线程知识点:

Java线程(new thread().run new runnable().start):

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值