我有一个类,我在其中使用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,因为那将意味着每个类仅一个实例。我想目前也只有每堂课一个。有什么好的做法?宣告执行人服务的最佳设计是什么?
如果要创建MessageConsumer
类的多个实例,则可能有一个用例来共享ExecutorService
实例,因此可以将其设为静态。
但是如果您仅创建MessageConsumer
的实例,则更喜欢not使用静态,这样您就可以进行依赖注入并因此具有可测试的组件。