(二十一)java多线程之Executors

news/2024/5/19 3:14:05 标签: java

本人邮箱: <kco1989@qq.com>
欢迎转载,转载请注明网址 http://blog.csdn.net/tianshi_kco
github: https://github.com/kco1989/kco
代码已经全部托管github有需要的同学自行下载

引言

java 自动的两个线程池讲完,今天就讲跟他们有关的一个工具类吧--Executors

理论

Executors 仅仅是一个线程池的工具类,它无法实例话,包含都是静态方法或静态类.

  • newFixedThreadPool(int nThreads) 创建一个指定线程数量的线程池t nThreads, ThreadFactory threadFactory)` 创建一个可以自定义的线程工厂的指定线程数量的线程池

  • newSingleThreadExecutor() 创建一个只有一个线程的线程池

  • newSingleThreadExecutor(ThreadFactory threadFactory) 创建一个可以自定义线程工程的且只有一个线程的线程池

  • newCachedThreadPool 创建一个可以缓存的线程池,它的源码其实是return new ThreadPoolExecutor(0, Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>()); 通过这里我们可以看出,他的核心线程数0,最大线程数为Integer.MAX_VALUE,但线程空闲时,线程可以缓存1分钟,之后如果还没有任务则被回收.工作队列是一个容量0大小的SynchronousQueue队列

  • newCachedThreadPool(ThreadFactory threadFactory) 跟上面一样,只是多了可以自定义线程工厂

  • newSingleThreadScheduledExecutor() 创建一个只有一个线程的任务调度线程池.

  • newSingleThreadScheduledExecutor(ThreadFactory threadFactory) 创建一个只有一个线程且能自定义线程工程的任务调度线程池

  • newScheduledThreadPool(int corePoolSize) 创建指定线程数量的任务调度线程池

  • newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory) 创建一个可以指定数量写自定义线程工程的任务调度线程池

除此之外,Executors还提供了让Runnable转化为Callable的适配器

例子

这个章节就不写例子,前面学了线程池的知识之后,直接看Executors源码,就感觉比较清晰


打赏

如果觉得我的文章写的还过得去的话,有钱就捧个钱场,没钱给我捧个人场(帮我点赞或推荐一下)
微信打赏
支付宝打赏


http://www.niftyadmin.cn/n/1585954.html

相关文章

网络通讯-udp/tcp

socket(简称 套接字) 是进程间通信的一种方式&#xff0c;它与其他进程间通信的一个主要不同是&#xff1a;它能实现不同主机间的进程间通信。 在 Python 中 使用socket 模块的函数 socket 就可以完成socket对象的创建&#xff1a; import socket socket.socket(AddressFamily,…

Redis开发运维实践专题功能之流水线

3.3 流水线 利用流水线&#xff08;pipeline&#xff09;的方式从client打包多条命令一起发出&#xff0c;不需要等待单条命令的响应返回&#xff0c;而redis服务端会处理完多条命令后会将多条命令的处理结果打包到一起返回给客户端&#xff1a; cat data.txt | redis-cli –pi…

python_flask_ORM

ORM &#xff08;Object-Relation Mapping&#xff09; 对象-关系映射. 主要实现模型对象到关系数据库数据的映射. 优缺点&#xff1a; 优点&#xff1a; 只需要面向对象编程&#xff0c;不需要使用sql语言实现数据模型和数据库的解藕&#xff0c;及不用关心是什么数据库&am…

win7选择默认程序出错

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Unknown]“AlwaysShowExt””"“QueryClassStore””"“TypeOverlay””"[HKEY_CLASSES_ROOT\Unknown\DefaultIcon]hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\00…

多任务-多线程

注意&#xff1a; 因为python存在全局解释器锁&#xff08;GIL&#xff09;所以纯Cpython不存在真正的多任务。想要实现多任务可以使用c模块实现真正的多任务。(笔记 多任务-* 不考虑GIL的存在&#xff0c;认为python存在多任务)。 每个进程默认开启一条主线程可以自己开辟多条…

js如何获取当前时间并对时间进行比较?

2019独角兽企业重金招聘Python工程师标准>>> //var yourtimedocument.getElementById(begin_time).value; var yourtime2009-12-10;yourtime yourtime.replace(/-/g,"/");//替换字符&#xff0c;变成标准格式 var d2new Date();//取今天的日期 var d1 n…

数据挖掘学习(一)环境搭建

创建虚拟环境 mkvirtualenv -p python3 sp 安装依赖包 使用包 matplotlib2.2.2 numpy1.14.2 pandas0.20.3 TA-Lib0.4.16 tables3.4.2 jupyter1.0.0 安装&#xff08;我存放在文件中&#xff09; pip install -r requirements.txt Ta-Lib安装会出现问题&#xff0c;需要先安装依…

git设置默认编辑为vim

f you want to set the editor only for Git, do either (you don’t need both): Set core.editor in your Git config: git config --global core.editor "vim" Set the GIT_EDITOR environment variable: export GIT_EDITORvim