Есть ли какие-либо проблемы с безопасностью потоков в этой демонстрации?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

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