Подождите, пока любой из двух потоков не завершится.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Подождите, пока любой из двух потоков не завершится.

Сообщение Anonymous »

Мне нужно отобразить цвета из цветового класса, который отображается 3 раза, и мне нужно добавить экземпляры 3 разных цветов с помощью потоков. Проблема в том, что я не знаю, как начать, потому что должен начать отображаться третий цвет. когда закончится любой из первых:

Код: Выделить всё

public class Main {
public static void main(String[] args) throws InterruptedException {

Color color1 = new Color(“Blue”);
Color color2 = new Color(“Red”);
Color color3 = new Color(“White”);
}
}

class Color implements Runnable{
private String color ;

public Color(String color) {
this.color = color;

public void run(){
for (int i = 0; i < 3; i++) {
System.out.println(color);
try {
Thread.sleep(300);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}

}
}
}
}
Результат, который мне нужен, должен быть напечатан в консоли 3 раза синим, 3 раза красным, 3 раза белым, но когда синий или красный завершает работу, должна начаться печать потока белым цветом. Первые два потока должны запуститься немедленно, а третий должен запуститься только после того, как любой из первых двух потоков завершит свою работу.
Я думал об использовании очередей BlockingQueue, но не смог не уверен, что это хорошая идея.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ads-finish
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»