Как узнать в Java , что поток закончил свое выполнение?

Пытаюсь сделать чтобы после выполнение потока вызвался метод activity(), но он выполняется сразу после вызова потока.

Можно как то отследить когда закончится поток или можно как то другим классом это сделать?

Runnable runnable = new Runnable() {
    public void run() {

        for (int i = 0; i < 50; i++) {

            Log.d("array", "1--one " + i);

            for (int k = 0; k < 40; k++) {
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                Log.d("array", "2--two " + k);
                if (k == 5) break;
            }
        }
    }
};

Thread thread = new Thread(runnable);
thread.start();

try {
    thread.join(3000);
} catch (InterruptedException e) {
}

activity();
Log.d("array", "--stop--");

Ответы (1 шт):

Автор решения: DavidJava

Да, метод join можно вызывать с аргументами. Если вы указываете 3000 в скобках, вы сообщаете компилятору, что нужно ждать выполнения потока 3000 миллисекунд. Если не указывать аргументы, то компилятор ждёт полной остановки потока. В обоих случаях, пока не закончится действие метода join, activity() вызываться не будет.

→ Ссылка