以下是我的界面 -
public interface IClient {
public String read(ClientInput input);
}
这是我对界面的实现 -
public class TempClient implements IClient {
@Override
public String read(ClientInput input) {
}
}
以下是我的工厂代码 -
public class TempClientFactory {
public static IClient getInstance() {
// new TempScheduler().startScheduler();
return ClientHolder.INSTANCE;
}
private static class ClientHolder {
private static final TempClient INSTANCE = new TempClient();
}
}
现在我有一个工厂获得TempClient
这样的实例,所以客户将在调用我们的代码时使用我们的工厂。
IClient client = TempClientFactory.getInstance();
client.read(input);
以下是我的后台线程代码 -
public class TempScheduler {
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
public void startScheduler() {
final ScheduledFuture<?> taskHandle = scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
try {
callServers();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}, 0, 500, TimeUnit.SECONDS);
}
}
//... some code
}
问题陈述: -
getInstance
方法中。这是放在那里的正确位置吗?答案 0 :(得分:1)
我想是的,把它放在getInstance()中并且只在第一次调用此方法时调用它。我想这就是你想要的。
OR
如果您正在使用某个框架,并且该框架在应用程序初始化/准备好时向您发送事件,那么您也可以在那里挂钩并在那里执行。但在这种情况下,它甚至可以在客户调用getInstance()之前开始执行。由你来决定是否可以。
后者更好恕我直言。