如何等待所有线程完成

rkue9o1l  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(300)

我有一个创建线程的代码。我需要知道如何在发射前等待它完成。

Map<String, String> accountsToRaidWith = Functions.getAccountsByCrew(accounts, crew);

            for (Map.Entry<String, String> entry : accountsToRaidWith.entrySet()) {
                BossRaiding R1 = new BossRaiding(entry.getKey(), entry.getValue(), raidid);
                R1.start();
            }

            boolean launched = Functions.launchRaid(raidid, id);
class BossRaiding implements Runnable {
    private Thread t;
    String name;
    String id;
    String raidid;

    BossRaiding (String name, String id, String raidid) {
        this.name = name;
        this.id = id;
        this.raidid = raidid;
    }

    public void run() {
        Functions.joinRaid(raidid, id);
    }

    public void start () {
        if (t == null) {
            t = new Thread (this);
            t.start ();
        }
    }
}

我正在尝试等待所有帐户加入,然后再启动。我似乎找不到一个正确的方法。

jk9hmnmh

jk9hmnmh1#

那个 Thread t 对象有一个方法: join() . 这将冻结执行该方法的线程,直到 t 停止。
因此,你可以在 BossRaiding :

public void join() throws InterruptedException {
    t.join();
}

然后循环所有示例,调用 join() 所有的人。如果你完成了整个循环,每个线程都完成了。

相关问题