- Process(进程): 一个 Tomcat 实例是一个进程。一个 JVM 对应一个进程
- Thread(线程): Tomcat BIO 模式的每个请求是一个线程。每个请求可以创建多个线程同时处理多个业务
- Coroutine(协程): Fiber 或者 GreenThread
- Runnable: 无返回的任务
- Callable: 有返回的任务
- Future: 保存异步处理结果
构造方法一:public FutureTask(Runnable runnable, V result)
Future.get()
得到 FutureTask
构建方法里的 result
构造方法二:public FutureTask(Callable<V> callable)
Future.get()
得到 Callable
的返回值
- 中断线程
- 守护线程
t.setDaemon(true)
守护线程的唯一作用就是为其他线程提供服务。java虚拟机退出时Daemon线程中的finally代码块并不一定会执行
- Lock
- ReentrantLock 重入锁
- java.util.concurrent
- Executor 框架
- 使用wait和notify方法
- 使用条件锁
- Future
- CountDownLatch: 需要知道有多少个任务
- CyclicBarrier: 需要知道有多少个任务
- Phaser: 可动态 register
Java8 CompletableFuture: 相当于 �OC 的 dispatch_queue,JS 的 Promise
- BlockingQueue
- Disruptor
使用 CAS 实现无锁设计
- 实现单个线程单例以及单个线程上下文信息存储,比如交易id等
- 实现线程安全,非线程安全的对象使用ThreadLocal之后就会变得线程安全,因为每个线程都会有一个对应的实例
- 承载一些线程相关的数据,避免在方法中来回传递参数
- 《Java并发编程的艺术》
- 《实战Java高并发程序设计》
- 《Java性能权威指南》
- 《Java核心技术 卷 �Ⅰ》 第 14 �章 并发
- 通过实例理解 JDK8 的 CompletableFuture