参考  :  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

转载于:https://www.cnblogs.com/yangh2016/p/5888167.html

18 线程池,线程安全队列,线程创建相关推荐

  1. 线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?线程池中线程复用原理

    1.一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度,就无法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续入队的任务.阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线程,使 ...

  2. 为什么用线程池?解释下线程池参数?线程池处理流程?阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?线程池中线程复用原理?

    为什么用线程池?解释下线程池参数? 1.降低资源消耗:提高线程利用率,降低创建和销毁线程的消耗. 2.提高响应速度:任务来了,直接有线程可用可执行,而不是先创建线程,再执行. 3.提高线程的可管理性: ...

  3. 线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?

    线程池中阻塞队列的作用: ⼀般的队列只能保证作为⼀个有限⻓度的缓冲区,如果超出了缓冲⻓度,就⽆法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续⼊队的任务. 阻塞队列可以保证任务队列中没有任务 ...

  4. 线程池中阻塞队列的作用?为什么是先添加列队而不是先 创建最大线程?

    1.一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度 ,就无法保留当前的任务 了,阻塞队列通过阻塞可以保留住当前想要继续入队的任务. 阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线 ...

  5. java如何创建一个两个数的队列_java线程池 如何构建一个线程立即到拉到MAX数量跑业务,线程到MAX了,额外的队列可以存储任务的线程池...

    背景:JDK的线程池的运作原理 : JDK的线程池的构造函数有7个参数,分别是corePoolSize.maximumPoolSize.keepAliveTime.unit.workQueue.thr ...

  6. Java并发编程:4种线程池和缓冲队列BlockingQueue

    一. 线程池简介 1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池.使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动 ...

  7. Java线程池和阻塞队列

    一.Java线程池的优点 1.降低资源消耗:通过重复利用线程池中已创建好的线程来降低线程创建和销毁造成的消耗. 2.提高响应速度:当任务到达时,任务可以直接拿到线程池中已创建好的线程立即执行. 3.提 ...

  8. java线程池_Java多线程并发:线程基本方法+线程池原理+阻塞队列原理技术分享...

    线程基本方法有哪些? 线程相关的基本方法有 wait,notify,notifyAll,sleep,join,yield 等. 线程等待(wait) 调用该方法的线程进入 WAITING 状态,只有等 ...

  9. GIL , 线程池 , 同步 , 异步 , 队列 , 事件

    一.什么是GIL 官方解释: ''' In CPython, the global interpreter lock, or GIL, is a mutex that prevents multipl ...

  10. JAVA线程池_并发队列工作笔记0003---线程池的分类_可缓存线程池_定长线程池_定时线程池_单例线程池

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这里说线程池的分类 有可缓存类型, 定长类型, 定时类型, 单例类型, 这里我这次用Executo ...

最新文章

  1. SpringMVC如何是使用自动注入@autowrid
  2. Titanium开发环境搭建第一个坑
  3. 编程思想之多线程与多进程——以操作系统的角度述说线程与进程
  4. 解决PHP大文件上传问题
  5. emacs org mode 中的标签全参考
  6. javase-NIO
  7. dart语法中list相关详解
  8. 复制linux内核,linux内核写时复制机制源代码解读
  9. 第十一周项目3-程序的多文件组织
  10. (多线程)leetcode1116. 打印零与奇偶数
  11. 图形模式下“文章伪原创工具”出汉字来
  12. android学习笔记---62_自定义窗口标题
  13. big sur darwin6.iso下载_苹果macOS Big Sur 11.0 正式版系统适配机型 附升级教程和系统镜像下载...
  14. BZOJ1079 [SCOI2008]着色方案 【dp记忆化搜索】
  15. 浏览器事件 - 监听浏览器刷新问题及解决方案
  16. 第三方对接-云存储-最新亚马逊Amazon云AWS S3服务JAVA上传图片,访问图片教程(API版本2.14.22)
  17. 小程序switch大小怎么改
  18. OpenCC for PHP 简繁体转换
  19. 图像处理——人脸情绪识别(python卷积神经网络)
  20. springbootTest为什么整合dubbo后无法使用

热门文章

  1. websocket协议中获取 http 请求字符串
  2. win查看php 启动状态,windows上如何查看nginx是否启动
  3. python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序
  4. 后台接收数组_腾讯C++后台开发面试笔试知识点参考笔记
  5. Golang实践录:工程管理
  6. 【Flink】 Flink 源码之 Buffer Timeout优化
  7. 95-872-064-源码-CEP-CepOperator源码
  8. 【IDEA】IDEA 下一些 编码技巧
  9. 【ElasticSearch】ElasticSearch 中使用衰减函数来完美你的搜索结果
  10. 60-100-020-使用-MySQL 的Show Profile命令