我有一个类,需要不时生成一个密钥,并将其与客户端和服务器共享。

Kdc类别:

    protected Kdc() {
    (do stuff)
    runKdc();
}


private void runKdc(){
    for(;;){
        generateKey();
        informClients();
        informServers();
        try {
            Thread.sleep(generationTime);
        } catch (InterruptedException e) {
            System.out.println("Sleep Interrupted");
        }
    }
}


主班:

    public static void main(String[] args) {
    Kdc kdc = new Kdc();
    System.out.println("done"); //Doesn't reach the line
}


现在我的问题是,在开始Kdc类后,我需要做一些事情,而我做不到!由于存在无限循环,因此在启动Kdc类后,它只会卡在Main类中。
有任何想法吗?

谢谢。

最佳答案

正如其他人所说,您应该在自己的线程中创建Kdc,例如

package com.testingarea;

class Kdc {

  public Kdc() {
    runKdc();
  }

  private void runKdc() {
    while(true) {
      System.out.println("Running kdc");
      try {
        Thread.sleep(5000);
      } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }

}

class RunKdc implements Runnable {

  @Override
  public void run() {
    Kdc k = new Kdc();
  }

}

public class TestThread {

  public static void main(String[] args) {
    new Thread(new RunKdc()).start();
    System.out.println("Kdc thread started");
  }


}

10-06 14:06