我想在循环中重新启动Main,直到用户停止它。 我用main方法创建了一个新类,并在while(true)循环中调用main。 可悲的是,这没有带来预期的效果。 因为它没有等待另一个主要完成而只是重新启动直到我的ram已满且程序崩溃。
public class Main {
public static void main(String[] args) throws InterruptedException {
boolean run=true;
while(true) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
OldMain.main(args);
}
});
t.start();
t.join();
}
}
如何使循环等待OldMain.main(args)完成?
答案 0 :(得分:-1)
您可以使用CountDownLatch等待main方法等待所有其他线程完成。您可以在参数中配置数字所需的no.of线程。
示例:
public class Main {
public static void main(final String[] args) throws InterruptedException {
boolean run = true;
CountDownLatch latch = new CountDownLatch(1);
final MyClass myClass = new MyClass(latch);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
myClass.doMyWork(args);
}
});
t.start();
latch.await();
t.join();
}
}
class MyClass {
private CountDownLatch latch;
public MyClass(CountDownLatch latch) {
this.latch = latch;
}
public void doMyWork(String[] args) {
for (int i = 0; i < 1000; i++) {
System.out.println(i);
}
latch.countDown();
}
}