Java 如何确保每个jvm只有一个guava service manager实例?
单例模式允许每个应用程序线程包含一个实例Java 如何确保每个jvm只有一个guava service manager实例?,java,guava,servicemanager,Java,Guava,Servicemanager,单例模式允许每个应用程序线程包含一个实例 如何确保每个JVM只运行一个guava Service Manager实例?因此,每当它启动一个新的独立条目时,java线程都可以检查service manager是否正在运行。为什么您认为不创建多个实例是行不通的?将ServiceManagerProvider作为一个单例实现,并仅使用ServiceManagerProvider.get()访问服务管理器 考虑使用依赖项注入而不是单例(反)模式: @Singleton 公共类ServiceManage
如何确保每个JVM只运行一个guava Service Manager实例?因此,每当它启动一个新的独立条目时,java线程都可以检查service manager是否正在运行。为什么您认为不创建多个实例是行不通的?将
ServiceManagerProvider
作为一个单例实现,并仅使用ServiceManagerProvider.get()
访问服务管理器
考虑使用依赖项注入而不是单例(反)模式:
@Singleton
公共类ServiceManagerProvider实现提供程序{
专用最终ServiceManager ServiceManager=。。。
@过度
公共服务管理器get(){
返回服务管理器;
}
}
在这里,每个注入器都有一个实例,这正是您(应该)想要的。请陈述任何改进问题的意见?我不太确定问题出在哪里,我的回答可能会有所帮助。
@Singleton
public class ServiceManagerProvider implements Provider<ServiceManager> {
private final ServiceManager serviceManager = ...
@Overrride
public ServiceManager get() {
return serviceManager;
}
}