Есть ли какие-либо проблемы с безопасностью потоков в этой демонстрации?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли какие-либо проблемы с безопасностью потоков в этой демонстрации?

Сообщение Anonymous »

Я видел сообщение о многопоточности, в которой используется переменная для имитации семафоров для достижения попеременного вывода из двух потоков.
Есть ли в приведенном ниже коде проблемы с потокобезопасностью?
public class Signal {
private static volatile int signal = 0;

static class ThreadA implements Runnable {
@Override
public void run() {
while (signal < 5) {
if (signal % 2 == 0) {
System.out.println("threadA: " + signal);
signal++;
}
}
}
}

static class ThreadB implements Runnable {
@Override
public void run() {
while (signal < 5) {
if (signal % 2 == 1) {
System.out.println("threadB: " + signal);
signal = signal + 1;
}
}
}
}

public static void main(String[] args) throws InterruptedException {
new Thread(new ThreadA()).start();
Thread.sleep(1000);
new Thread(new ThreadB()).start();
}
}

// output example:
threadA: 0
threadB: 1
threadA: 2
threadB: 3
threadA: 4


Подробнее здесь: https://stackoverflow.com/questions/790 ... -this-demo
Ответить

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

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

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

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

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