韩城搜索引擎建设网站,德州网架公司,自己怎么创建免费网站,用什么工具做网站系列文章目录
设计模式之避免共享的设计模式Immutability#xff08;不变性#xff09;模式 设计模式之并发特定场景下的设计模式 Two-phase Termination#xff08;两阶段终止#xff09;模式 设计模式之避免共享的设计模式Copy-on-Write模式 设计模式之避免共享的设计模…系列文章目录
设计模式之避免共享的设计模式Immutability不变性模式 设计模式之并发特定场景下的设计模式 Two-phase Termination两阶段终止模式 设计模式之避免共享的设计模式Copy-on-Write模式 设计模式之避免共享的设计模式 Thread-Specific Storage 模式 设计模式之多线程版本的if------Guarded Suspension模式 设计模式之多线程版本的if------Balking模式 文章目录 系列文章目录前言简介应用场景 前言
Thread-Per-Message 模式需要注意线程的创建销毁以及是否会导致OOM。 简介
Thread-Per-Message 模式—简单实用的分工方法Thread-Per-Message 模式就是为每个任务分配一个独立的线程这是一种最简单的分工方法。Thread-Per-Message 模式作为一种最简单的分工方案Java 中使用会存在性能缺陷。在Java中的线程是一个重量级的对象创建成本很高第一点创建线程比较耗时第二点线程占用的内存也比大。所以为每个请求创建一个新的线程并不适合高并发场景。为了解决这个缺点Java并发包里提供了线程池等工具类。在其他编程语言里例如 Go 语言基于轻量级线程实现 Thread-Per-Message 模式就完全没有问题。对于一些并发度没那么高的异步场景例如定时任务采用 Thread-Per-Message 模式是完全没有问题的。 应用场景
在Java中的线程是一个重量级的对象创建成本很高第一点创建线程比较耗时第二点线程占用的内存也比大。所以为每个请求创建一个新的线程并不适合高并发场景。
/*** author yang* version 1.0.0*/
public class ThreadPerMessageExample {public static void main(String[] args) {TaskHandler taskHandler new TaskHandler();for (int i 0; i 5; i) {String task 任务 i;taskHandler.handleTask(task);}}static class TaskHandler {public void handleTask(String task) {Thread thread new Thread(() - {System.out.println(处理 task 在线程 Thread.currentThread().getName());});thread.start();}}
}
Thread-Per-Message 模式的一个最经典的应用场景是网络编程里服务端的实现服务端为每个客户端请求创建一个独立的线程当线程处理完请求后自动销毁这是一种最简单的并发处理网络请求的方法。