个人简介

Echo Blog


江湖无名 安心练剑
  • 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
  • JCIP-21-thread pool 手写线程池
    手写线程池 本文描述了线程池的核心类。 从原理理解线程池 线程池的作用 降低资源消耗。 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。 当任务到达时,任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性。 线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-21-thread pool shutdown 如何优雅的关闭线程池
    背景 前几天在和同事聊一个需求,说是有个数据查询的功能,因为涉及到多个第三方接口调用,想用线程池并行来做。 很正常的一个方案,但是上线后发现,每次服务发布的时候,这个数据查询的功能就会挂掉,后来发现是线程池没有做好关闭,这里总结一下。 关键字:线程池、shutdown、shutdownNow、interrupt 一、线程中断 interrupt 先补一补基础的知识:线程中断。 线...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-20-thread 源码
    Thread 示例 一、继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。 (2)创建Thread子类的实例,即创建了线程对象。 (3)调用线程对象的start()方法来启动该线程。 public class FirstThreadTest extends Threa...
    2019-01-18 03:21:15 | Concurrency