JCIP-27-Executor CompletionService ExecutorCompletionService
CompletionService
接口
定义了一系列的方法的接口。
public interface CompletionService<V> {
Future<V> submit(Callable<V> task);
Future<V> submit(Runnable task, V result);
...
2019-01-18 03:21:15 |
Concurrency
JCIP-26-Executor Future FutureTask
Future
在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。
Future接口是Java标准API的一部分,在java.util.concurrent包中。Future接口是Java线程Future模式的实现,可以来进行异步计算。
Future模式可以这样来描述:我有一个任务,提交给了Future,...
2019-01-18 03:21:15 |
Concurrency
JCIP-25-Executor ScheduledThreadPoolExecutor 实现定时调度
Timer 类的不足
为什么需要 ScheduledThreadPoolExecutor?
在JDK1.5之前,我们关于定时/周期操作都是通过Timer来实现的。
但是Timer有以下几种危险
a. Timer是基于绝对时间的。容易受系统时钟的影响。
b. Timer只新建了一个线程来执行所有的TimeTask。所有TimeTask可能会相关影响
c. Timer不会捕获...
2019-01-18 03:21:15 |
Concurrency
JCIP-24-Timer 实现定时调度
Timer
如果我们想定时执行一个任务,应该怎么做呢?
Timer 就是一个 Java 提供的类。
入门例子
测试代码
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTes...
2019-01-18 03:21:15 |
Concurrency
JCIP-23-Executor ThreadPoolExecutor 和 Executors
ThreadPoolExecutor
线程池相关的处理时 Executor 的核心。
可以通过调用Executors以下静态工厂方法来创建线程池并返回一个ExecutorService对象。
接口定义
继承实现了 AbstractExecutorService。
AbstractExecutorService 中定义了一系列对于
public class ThreadPoolEx...
2019-01-18 03:21:15 |
Concurrency
JCIP-23-ThreadPoolExecutor 对应的拒绝策略
介绍一下 ThreadPoolExecutor
在Java中,ThreadPoolExecutor是java.util.concurrent包下的一个类,用于创建和管理线程池以实现并发执行任务。它是Java提供的用于多线程编程的强大工具之一。
ThreadPoolExecutor提供了一种可配置的线程池实现,可以通过设置参数来控制线程池的大小、线程的创建和销毁方式,以及任务的执行策略等。...
2019-01-18 03:21:15 |
Concurrency
JCIP-22-Executor 框架, ExecutorService, AbstractExecutorService
Q
是什么
为什么需要
有什么优缺点
如何使用
整个技术体系
为什么这么设计?如果是我,我怎么设计?
为什么需要 Executor
new Thread() 的缺点
每次new Thread()耗费性能
调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。
...
2019-01-18 03:21:15 |
Concurrency
JCIP-21-thread stop 线程关闭
想要启动线程的话,只需调用 Thread类 的start()方法,并在run()方法中定义需要执行的内容即可,灰常滴简单,但如何优雅地停止线程呢?就值得好好思考玩味了。
1. 为什么需要停止线程
通常情况下我们是不会去手动去停止的,而是等待线程自然运行至结束停止,但是在我们实际开发中,会有很多情况中我们是需要提前去手动来停止线程,比如程序中出现异常错误,比如使用者关闭程序等情况中。
在...
2019-01-18 03:21:15 |
Concurrency