我们在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):