虽然我们想要执行2 Runnable
s:
executor.execute(new Runnable1());
executor.execute(new Runnable2());
不知道哪个Runnable
将首先开始执行?但我希望Runnable1首先启动执行。怎么做?
答案 0 :(得分:9)
为什么不创建一个只运行Runnable1()
然后Runnable2()
的runnable?如果您不希望它们并行执行,请不要将它们分别提交给执行者......
例如:
executor.execute(new Runnable() {
@Override public void run() {
new Runnable1().run();
new Runnable2().run();
}
});
当然,如果Runnable1
引发未经检查的异常,你应该考虑你想要发生什么 - 你想要Runnable2
运行吗?
// Somewhat pseudo-code...
Server server = new Server();
server.onStartedListening(new Runnable() {
@Override public void run() {
executor.execute(new ClientConnection());
}
});
executor.execute(server);
答案 1 :(得分:0)
在Runnable2()代码中检查Runnable1.completed
在Runnable1中定义一个static boolean completed = false;
并在Runnable1中完成执行后将其设为true