首页 养生问答 疾病百科 养生资讯 女性养生 男性养生

Java多线程MasterWorker模式如何在高并发情况下优化

发布网友 发布时间:2022-04-22 05:19

我来回答

2个回答

热心网友 时间:2022-04-11 13:00

你说的Master指的是java的线程池吧,我之前做过一个项目,因为项目在内网拿不出来,我给你说一下我那次的经验。

几个关键点:

1、java线程池:使用java提供的ThreadPoolExecutor类构造主池,再构造一个辅池(辅池的作用在于当主池进入拒绝策略的时候,可以启动辅池,帮助主池分担一部分线程,或者在主池shutdown的瞬间又有任务进来,也会走到拒绝策略,此时可以启动辅池处理这些线程,一般情况下辅池不会启动),排队策略使用LinkedBlockingQueue队列。

2、单例模式:利用spring的IOC容器的单例性,每次取线程池时,从IOC容器中注入。创建一个组件类BatPool(spring组件默认为单例),里面再使用单例模式创建线程池,单例中的单例,保证单例性:


@Component

class BatPool{

private ThreadPoolExecutor mainPool;

ThreadPoolExecutor create(){

if(mainPool== null){

   retrun new ThreadPoolExecutor();

}else{

 retrun mainPool;

}

...

}


业务中:

@Autowired

BatPool batPool;

ThreadPoolExecutor pool = batPool.create();

...


线程池的配置你自己参考网上吧

这样在业务中,每次取到的池都是同一个池,不会多次创建。

如果你没有使用spring的话,我再想想办法怎么实现全局的单例模式

热心网友 时间:2022-04-11 14:18

Master-Worker是常见的并行设计模式。
核心思想是: 系统中有两个进程协议工作。Master进程负责接收和分配任务,Worker负责处理子任务。当worker进程将子任务处理完毕之后,将结果返回给Master进程,由Master进行归纳和汇总。
优势:可以将大任务分解成若干小任务,并发执行,从而提高系统性能。对于客户端(请求发起者)来说,任务一旦提交,Master进程就会立刻分配任务并立刻返回,并不会等待系统处理完再返回,其处理过程是异步的。

Java多线程MasterWorker模式如何在高并发情况下优化 很少用到多执行绪,多考虑高并发吗 NGNIX介绍 Gunicorn介绍 nginx有几种工作模式 Citus: Distributed PostgreSQL for Data-Intensive Applications_百度知 ... Nginx 简介 Netty入门 -- 什么是Netty? java去公司工作用到的是哪方面的知识? apache-httpd的三种模式 高并发多线程java 多线程高并发处理方式 java多线程并发 多线程和高并发 高并发是不是多线程 多线程高并发解决 多线程和高并发的区别 什么是多线程并发 怎么实现多线程并发
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com