码迷,mamicode.com
首页 > 编程语言 > 详细

18 线程池,线程安全队列,线程创建

时间:2016-09-20 12:08:57      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

参考  :  http://blog.csdn.net/madun/article/details/20313269

 

创建线程池

ExecutorService  service= Executors.newFixedThreadPool(nThreads);

提交线程:

 //TODO  有返回状态处理
            service.submit(new LoadDataThread(startDocId, endDocId, luceneFileDir,this.queue,this.docs));

线程安全队列:

LinkedBlockingQueue<Document> queue=new LinkedBlockingQueue<Document>(this.numDocs);

BlockingQueue,顾名思义,“阻塞队列”:可以提供阻塞功能的队列。 
首先,看看BlockingQueue提供的常用方法: 

从上表可以很明显看出每个方法的作用,这个不用多说。我想说的是: 
  • add(e) remove() element() 方法不会阻塞线程。当不满足约束条件时,会抛出IllegalStateException 异常。例如:当队列被元素填满后,再调用add(e),则会抛出异常。
  • offer(e) poll() peek() 方法即不会阻塞线程,也不会抛出异常。例如:当队列被元素填满后,再调用offer(e),则不会插入元素,函数返回false。
  • 要想要实现阻塞功能,需要调用put(e) take() 方法。当不满足约束条件时,会阻塞线程。

 

线程创建:

/**
 * 加载数据线程
 */
public class LoadDataThread implements Runnable

 

18 线程池,线程安全队列,线程创建

标签:

原文地址:http://www.cnblogs.com/yangh2016/p/5888167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!