我正在尝试以这种方式将多个嵌入式 zookeeper 服务器启动到 Java 应用程序的单独线程中:
String port1 = "2181";
String directory1 = new File(System.getProperty("java.io.tmpdir"), "zookeeper/data1").getAbsolutePath();
final ServerConfig config1 = new ServerConfig();
config1.parse(new String[] { port1, directory1 });
new Thread(new Runnable() {
@Override
public void run()
{
try{
ZooKeeperServerMain zk = new ZooKeeperServerMain()
zk.runFromConfig(config1);
}catch(Exception e){
e.printStackTrace();
}
}
}).run();
当我这样启动zk的时候,主进程就被阻塞了,剩下的指令没有执行! 是否有在单独的线程中启动 zookeeper 的正确方法?
最佳答案
您在 Thread
上调用 run()
而不是 start()
。
new Thread(new Runnable() {
@Override
public void run()
{
try{
ZooKeeperServerMain zk = new ZooKeeperServerMain()
zk.runFromConfig(config1);
}catch(Exception e){
e.printStackTrace();
}
}
}).start();
关于java - 在单独的线程中启动 zookeeper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25378919/