zoukankan      html  css  js  c++  java
  • 18 线程池,线程安全队列,线程创建

    参考  :  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
  • 相关阅读:
    【Daily Scrum】11-18:Postmortem of sprint 1
    【Daily Scrum】11-17
    【Daily Scrum】11-14
    【Daily Scrum】11-13
    【Daily Scrum】11-12
    【Daily Scrum】12-04
    【Daily Scrum】12-03
    【Review】Postmortem of Sprint 2 and next planning
    【Daily Scrum】11-28
    【Daily Scrum】11-27
  • 原文地址:https://www.cnblogs.com/yangh2016/p/5888167.html
Copyright © 2011-2022 走看看