java线程池并发_Java并发教程–线程池
java线程池并发
首先,线程池。 让我们直接进入java.util.concurrent.ExecutorService ,它为我们提供了线程池的基本接口。 所有线程池都允许提交Callable或Runnable实例以供将来执行。 它们还提供各种池管理方法。
泳池管理
池存在各种管理方法。 您可以使用shutdown()池,该池将拒绝将来的所有提交,但将完全处理进程内执行,甚至还包括尚未开始但在关闭启动之前提交的进程。 您还可以更积极地执行shutdownNow()。 这也将阻止将来提交任何内容,但是它具有一些不同的显着行为。 它不会开始执行已提交但尚未开始的任务。 它们将在返回的列表中。 它还将尝试停止或更准确地说是当前正在执行任务的Thread.interrupt() 。 这是最大的努力,不能保证成功完成这些任务。
线程工厂
稍后,我们将进入java.util.concurrent.Executors构建器类,该类可以创建各种线程池配置,但首先让我们集中讨论使用ThreadFactory。 您需要利用Executor中的ThreadFactory支持,并养成提供自己的习惯。 默认的ThreadFactory将为您提供一个递增编号的池命名方案,这在日志或其他监视中并不是很有用。 对于创建的第一个池,您将获得名为pool-1-thread-1 , pool-1-thread-2的线程 ,第二个以pool-2-thread-1开头的线程 ,等等。通过提供自己的ThreadFactory ,您可以具有名为ReportProcessingThread1和HttpThread1的线程。 这是一个简单的例子:
private AtomicLong counter = new AtomicLong();
private String name;
public Thread newThread(Runnable r) {Thread t = new Thread(r);t.setName(name + counter.incrementAndGet());return t;
}
仅当创建新线程时才调用ThreadFactory 。 鉴于JDK线程池将尽可能重用线程,因此此类不能用于管理执行的开始。
执行器生成器方法
现在回到Executors实用程序构建器方法。 他们是:
- newCachedThreadPool()将为您提供一个线程池,该线程池将在可能的情况下重用线程,并根据需要创建新线程,而没有配置的限制。
- newFixedThreadPool(int nThreads)将为您提供一个线程池,该线程池将最多使用指定的线程数,但将接受与提交的任务一样多的任务,以便按提交顺序运行它们。
- newScheduledThreadPool(int corePoolSize)专用于按延迟执行的定期计划来调度执行延迟的线程。 返回的线程池实现ScheduledExecutorService ,该服务公开了其他调度方法schedule(Runnable命令,长延迟,TimeUnit单位) , scheduleAtFixedRate(Runnable命令,长initialDelay,长周期,TimeUnit单位)和scheduleWithFixedDelay(Runnable命令,长initialDelay,长延迟, TimeUnit单位) 。
- newSingleThreadExecutor()和newSingleThreadScheduledExecutor() 。 这些对可以提交的任务数量没有限制,仅确保一次执行单个线程/任务。
最后,有一些帮助方法可用于从Runnable创建Callable实例。 这使我们进入了新创建的结构中,该结构允许线程抛出异常并返回值,这在我们之前非常痛苦的解决。 在下一篇文章中,我们将考虑这些以及它们如何与这些线程池一起使用。
参考: Java并发第3部分–来自我们JCG合作伙伴的Carfey Software博客上的 线程池 。
- Java并发教程–信号量
- Java并发教程–重入锁
- Java并发教程–可调用,将来
- Java并发教程–阻塞队列
- Java并发教程– CountDownLatch
- Exchanger和无GC的Java
- Java Fork / Join进行并行编程
- 使用迭代器时如何避免ConcurrentModificationException
- 改善Java应用程序性能的快速技巧
翻译自: https://www.javacodegeeks.com/2011/09/java-concurrency-tutorial-thread-pools.html
java线程池并发
java线程池并发_Java并发教程–线程池相关推荐
- java等待5秒_Java并发编程-主线程等待子线程解决方案
主线程等待所有子线程执行完成之后,再继续往下执行的解决方案 public class TestThread extends Thread { public void run() { System.ou ...
- java线程池教程_Java基础教程——线程池
启动新线程,需要和操作系统进行交互,成本比较高. 使用线程池可以提高性能-- 线程池会提前创建大量的空闲线程,随时待命执行线程任务.在执行完了一个任务之后,线程会回到空闲状态,等待执行下一个任务.(这 ...
- java 线程假醒_Java并发基础05. 传统线程同步通信技术
先看一个问题: 有两个线程,子线程先执行10次,然后主线程执行5次,然后再切换到子线程执行10,再主线程执行5次--如此往返执行50次. 看完这个问题,很明显要用到线程间的通信了, 先分析一下思路:首 ...
- 用java实现combin函数_Java并发工具类CompletableFuture教程与示例
Java 8带来了大量的新功能和增强功能,例如Lambda表达式,Streams,CompletableFutures等.在本文中,我将通过简单的示例向您详细说明CompletableFuture及其 ...
- java中的让步_java基本教程之线程让步 java多线程教程
本章涉及到的内容包括: 1. yield()介绍 2. yield()示例 3. yield() 与 wait()的比较 1. yield()介绍 yield()的作用是让步.它能让当前线程由&quo ...
- 线程停止继续_Java并发学习第二弹:如何正确停止线程?
线程停止的原则:使用interrupt来通知,而不是强制停止线程 interrupt在英文中实为通知的意思,那么为什么停止线程不直接停止而使用通知呢? 这是因为在java中,我们如果想要停止一个线程, ...
- java 共享锁 独占锁_Java并发编程锁之独占公平锁与非公平锁比较
Java并发编程锁之独占公平锁与非公平锁比较 公平锁和非公平锁理解: 在上一篇文章中,我们知道了非公平锁.其实Java中还存在着公平锁呢.公平二字怎么理解呢?和我们现实理解是一样的.大家取排队本着先来 ...
- Java 高并发_JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过!...
JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过! 1.JPG (37.82 KB, 下载次数: 0) 2018-12-3 09:40 上传 2.JPG (28 ...
- java中解决脏读_java并发编程学习之脏读代码示例及处理
使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即 ...
最新文章
- Word2010开发——操作文档
- linux 下jdk的卸载与安装
- 2016计算机课程设计,2016年计算机组成原理课程设计-硬布线控制器的设计.doc
- boost::log::expressions::has_attr用法的测试程序
- 将MyEclipse项目导入到Eclipse中
- Cloud一分钟 | 微软Azure云服务宣布又一重磅应用落地;微软云计算转型迅猛,或助其市值短期达到1万亿美元...
- 【转载】TreeView序列化,TreeView串行化,TreeView反序列化 c# winform
- python全免费教程-python教程免费
- VS2010安装教程
- 有效解决鼠标问题的驱动工具-罗技G502游戏鼠标驱动程序提供下载
- Marquee首尾相连不间断移动 开始完全显示
- css3实现动画的三种方式
- java adobe pdf转word_adobe reader如何把PDF转换成word?adobe reader把PDF转换成word教程
- 计算机视觉与深度学习(8)
- 《阿特拉斯耸耸肩》节选:互害与甩锅的反敏捷组织
- 巧妙去除Word文档修订和批注帮助
- 芯准TSN系统的测试与验证(1)——测试环境配置
- 车载通信与导航(五):D2D通信流程
- 基于单片机的测量心率脉搏健康系统设计与
- Spring核心机制IoC与AoP梳理
热门文章
- 来自一位家长的肺腑之言,句句在理!!!
- java实现动态验证码源代码——jsp页面
- struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Jsp页面
- 道指mt4代码_剑指offer算法题052:正则表达式匹配
- python大神交流网站_学习Python必去的8个网站
- java客户端作为kafka消费者测试
- 完整的MIME类型列表
- 机器学习评价指标大汇总
- java的几种对象(PO,VO,DAO,BO,POJO)解释
- 二叉堆的操作总结(insert+deleteMin+increaseKey+decreaseKey+percolateDown+percolateUp)