ThreadExecutorPool 线程池组件
ThreadExecutorPool是使用最多的线程池组件:
Executor是用来执行提交的Runnable任务的对象,并以接口的形式定义,提供一种提交任务(submission task)与执行任务(run task)之间的解耦方式,还包含有线程使用与周期调度的详细细节等。Executor常常用来代替早期的线程创建方式,如new Thread(new(RunnableTask())).start(),在实际中可以用如下的方式来提交任务到线程池里,Executor会自动执行 你的任务.
- Executor executor = anExecutor;
- executor.execute(new RunnableTask1());
我发现一个案例:
我的疑问:
1- latch 就是作为这个线程类的 入参?根本没有用到的地方,仅仅是父类构造方法里传入了latch参数:
public BaseHealthChecker(String serviceName, CountDownLatch latch)
_latch.countDown();//父类里run()这个和 Excecutor里size有啥关系??
下面是 主启动类里面设置线程池的地方,和上面的countDown有啥关系?
//Start service checkers using executor framework
Executor executor = Executors.newFixedThreadPool(_services.size());
这里循环里面return false是我特别不能理解的?为什么在方法的最后又返回true???

还有著名的await方法:
//Now wait till all services are checked
_latch.await(); //这个和 Excecutor两回事哈,这个就是锁--计数!!
ThreadExecutorPool 线程池组件的更多相关文章
- Java ThreadPoolExecutor线程池原理及源码分析
一.源码分析(基于JDK1.6) ThreadExecutorPool是使用最多的线程池组件,了解它的原始资料最好是从从设计者(Doug Lea)的口中知道它的来龙去脉.在Jdk1.6中,Thread ...
- 原生线程池这么强大,Tomcat 为何还需扩展线程池?
前言 Tomcat/Jetty 是目前比较流行的 Web 容器,两者接受请求之后都会转交给线程池处理,这样可以有效提高处理的能力与并发度.JDK 提高完整线程池实现,但是 Tomcat/Jetty 都 ...
- 线程池技术之:ThreadPoolExecutor 源码解析
java中的所说的线程池,一般都是围绕着 ThreadPoolExecutor 来展开的.其他的实现基本都是基于它,或者模仿它的.所以只要理解 ThreadPoolExecutor, 就相当于完全理解 ...
- 开源动态可监控线程池DynamicTp介绍
前言 使用线程池 ThreadPoolExecutor 过程中你是否有以下痛点呢? 代码中创建了一个 ThreadPoolExecutor,但是不知道那几个核心参数设置多少比较合适 凭经验设置参数值, ...
- C#多线程之线程池篇3
在上一篇C#多线程之线程池篇2中,我们主要学习了线程池和并行度以及如何实现取消选项的相关知识.在这一篇中,我们主要学习如何使用等待句柄和超时.使用计时器和使用BackgroundWorker组件的相关 ...
- C#多线程之线程池篇1
在C#多线程之线程池篇中,我们将学习多线程访问共享资源的一些通用的技术,我们将学习到以下知识点: 在线程池中调用委托 在线程池中执行异步操作 线程池和并行度 实现取消选项 使用等待句柄和超时 使用计时 ...
- Nodejs事件引擎libuv源码剖析之:高效线程池(threadpool)的实现
声明:本文为原创博文,转载请注明出处. Nodejs编程是全异步的,这就意味着我们不必每次都阻塞等待该次操作的结果,而事件完成(就绪)时会主动回调通知我们.在网络编程中,一般都是基于Reactor线程 ...
- (转载)JAVA线程池管理
平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很多刚开始接触线程的开发攻城师却在这个上面吃了不少苦头.怎么做一套简便的线程开发模式 ...
- paip.提升性能----数据库连接池以及线程池以及对象池
paip.提升性能----数据库连接池以及线程池以及对象池 目录:数据库连接池c3po,线程池ExecutorService:Jakartacommons-pool对象池 作者Attilax 艾龙, ...
随机推荐
- unity脚本执行顺序
Awake ->OnEable-> Start ->-> FixedUpdate-> Update -> LateUpdate ->OnGUI ->R ...
- spring之Environment
Spring 的Environment包含两方便的抽象,profile和 property 前者是一组bean的定义,只有相应的profile被激活的情况下才会起作用. 后者是提供方便的抽象,应用程序 ...
- C++17尝鲜:variant
variant variant 是 C++17 所提供的变体类型.variant<X, Y, Z> 是可存放 X, Y, Z 这三种类型数据的变体类型. 与C语言中传统的 union 类型 ...
- springboot 项目 注意事项
SpringBoot出现下列错误. Your ApplicationContext is unlikely to start due to a @ComponentScan of the defaul ...
- 理解AppDomain和AppPool
应用程序池: 这是微软的一个全新概念:应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置.因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会 ...
- C# 图像处理:Bitmap 与 Image 之间的转换
Image img = this.pictureBox1.Image; Bitmap map = new Bitmap(img); Image img = Bitmap; Image和Bitmap类概 ...
- 对于目标识别的一些idea-传递特征的position而不是特征或特征图
我们在目标识别中通常是识别到目标的,通过proposals回归的方式,但是如果我们可以在 训练过程中识别到特征以后,将特征的位置信息传到下一层网络这样是否会训练收敛更快, 精度更高. 可能这也是以后机 ...
- Using Service Workers
[Using Service Workers] 1.This is an experimental technology Because this technology's specification ...
- git库初次下载
1.右键Git Batch Here==>输入 git config --list 确认2.再次输入ssh-keygen -t rsa -C “修改后的邮箱” 3.回车多次 找到 生成序列目录 ...
- meta标签的使用
meta标签是html标记head区的一个关键标签,它位于HTML文档的<head>和<title>之间(有些也不是在<head>和<title>之间) ...