如何在完成其他void之后执行void

时间:2017-05-17 18:08:23

标签: java android

如何在空白“a”完成后启动“b”无效。

Binary Search Tree

3 个答案:

答案 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();
....