从名字可以看出,为每一个任务或者消息分配一个线程,适用于类似httpServer的场景,为每一个请求分配一个线程去执行。但是在java中创建线程的成本比较高(线程创建耗时且线程占用的内存较大)有俩种取代方案
- 用线程池取代,利用线程的复用思想
- 用更轻量的线程方案取代,golang中的协程,java中loom中的Fiber
注:多线程分工模式下这个应该是最简单的方案了
java中的另一个模式WorkThread模式
java创建线程、以及线程切换的开销很重,所以我们可以采用workThread模式即用线程池,来复用线程。
workthrea的“坑”
由于线程池中的任务有相互依赖关系,导致线程池因为没有资源被死锁,见下面:
- 开辟线程池
- 避免线程池的共享
1 | //L1、L2 阶段共用的线程池 |