我应该使在类级别定义的Executor服务实例静态吗?

问题描述 投票:0回答:1

我有一个类,我在其中使用Executor Service的线程池中有固定数量的线程,这些线程执行多个短期任务。

我的代码是这样的:

public class MessageConsumer{

private ExecutorService executor = Executors.newFixedThreadPool(4);

main(){
.....
}

receiveMessage(String message){
try{
     executor.execute(new FileWriterTask(message))
     ......
   }catch(Exception e){
       ........
       executor.shutDown();
       .........
   }
}

.....
}

如您所见,我已经在班级定义并实例化了我的Executor服务并在方法中使用它。我已将其设为私有,并且没有方法可以从中访问它外。

我想知道是否也应该标记我的Executor服务实例static,因为那将意味着每个类仅一个实例。我想目前也只有每堂课一个。有什么好的做法?宣告执行人服务的最佳设计是什么?

java static executorservice design
1个回答
0
投票

如果要创建MessageConsumer类的多个实例,则可能有一个用例来共享ExecutorService实例,因此可以将其设为静态。

但是如果您仅创建MessageConsumer的实例,则更喜欢not使用静态,这样您就可以进行依赖注入并因此具有可测试的组件。

© www.soinside.com 2019 - 2024. All rights reserved.