java - 在单独的线程中启动 zookeeper

标签 java multithreading configuration distributed apache-zookeeper

我正在尝试以这种方式将多个嵌入式 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/

相关文章:

java - 从打包在 jar 中的库访问类

java - 两个数字的基本加法

java - 在 docker 容器内运行仪表测试

java - 安排相同的任务 500 次

c - 在多个线程之间共享单个 X509_STORE 来验证证书是否安全?

debugging - 如何在web.xml 和log4j.properties 中配置log4j 输出文件路径?

Java - 用一种方法重绘 JPanel 2 次

c# - 如果在 ThreadPool 的线程正在写入文件时应用程序关闭,会发生什么情况?

java - 通过包名扫描resteasy资源

visual-studio - 如何配置 Visual Studio (2010) 在默认情况下双击打开代码隐藏的 aspx 页面?