如何在空白“a”完成后启动“b”无效。
Binary Search Tree
答案 0 :(得分:1)
鉴于方法 s a()和b()在同一个线程中,它们不会同时执行,而是按顺序执行,这听起来像你想要的。
注意:您将这些方法称为' void' s。那是不对的。它们是方法,它们的返回类型恰好是“无效”,但它可以很容易地成为其他原始或对象返回类型。
答案 1 :(得分:1)
只要您不在()中使用某些异步代码,b()就不会同时运行。如果不是这种情况,请发布异步代码。
答案 2 :(得分:0)
考虑到你有两种方法,void A和void B.考虑一下:
public void a(){
for(int i = 0; i< 100; i++){
System.out.println("a");
}
}
public void a(){
for(int i = 0; i< 100; i++){
System.out.println("b");
}
}
(该示例涵盖100次重复,以便于查看)。仔细观察,&#34; b&#34;将在&#34; a&#34;完了。 Java按顺序执行。如果你在A中睡了10秒钟,并且一切都发生在同一个线程上,B将在10秒后执行。
如果您使用上面的for循环并将其更改为更高的数量(以确保它需要一段时间),您仍然会看到B永远不会执行直到A完成。如果a包含异步任务或新线程,则不适用,因为它在第一个线程旁边的第二个线程上运行。但这是唯一的例外:在所有其他情况下,方法在同一个线程上执行,方法内的所有内容都在同一个线程上,A将在B开始之前完成
但你当然可以这样做:
...
a();
...
public void a(){
...
b();
}
public void b(){
...
}
但与调用相同:
....
a();
b();
....