个人简介

Echo Blog


江湖无名 安心练剑
  • JCIP-28-Executor CompletableFuture
    Future 的不足 性能 虽然Future以及相关使用方法提供了异步执行任务的能力,但是对于结果的获取却是很不方便,只能通过阻塞或者轮询的方式得到任务的结果。 阻塞的方式显然和我们的异步编程的初衷相违背,轮询的方式又会耗费无谓的CPU资源,而且也不能及时地得到计算结果,为什么不能用观察者设计模式当计算结果完成及时通知监听者呢? 多个 Future 结果之间的依赖性 Future接...
    2019-01-18 03:21:15 | Concurrency
  • 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-22-Executor 框架, ExecutorService, AbstractExecutorService
    Q 是什么 为什么需要 有什么优缺点 如何使用 整个技术体系 为什么这么设计?如果是我,我怎么设计? 为什么需要 Executor new Thread() 的缺点 每次new Thread()耗费性能 调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。 ...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-21-thread pool 手写线程池
    手写线程池 本文描述了线程池的核心类。 从原理理解线程池 线程池的作用 降低资源消耗。 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。 当任务到达时,任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性。 线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和...
    2019-01-18 03:21:15 | Concurrency