Необходимо написать 2 потока. Поток А с переодичностью в 10 секунд будет переключаться из состояния "позволено" в состояние "не позволено", и 2 поток который будет ждать состояние Потока А "позволено" и начинать отсчет от 10, и останавливает свое действие как только состояние потока А смениться на состояние "не позволено". Как лучше это сделать. Подумал, что в потоке А ввести переменную значение которой будет меняться. Но как мне тогда в потоке В определять текущее значение переменной потока А. Посоветуйте в каком направлении копать или как лучше сделать. Заранее спасибо. Код потока А:
class A extends Thread{
public boolean isAllowed=false;
A(){
}
public void run(){
for(int i=0; i<10; i++){
try {
Thread.sleep(10000);
isAllowed=true;
} catch (InterruptedException e) {
System.err.println(e);
}
}
}
}
Можно использовать, например, общую переменную AtomicBoolean
class A extends Thread{
private final AtomicBoolean isAllowed;
A(AtomicBoolean isAllowed){
this.isAllowed = isAllowed;
}
public void run(){
for(int i=0; i<10; i++){
try {
Thread.sleep(10000);
isAllowed.set(i % 2);
} catch (InterruptedException e) {
System.err.println(e);
}
}
}
}
class B extends Thread{
private final AtomicBoolean isAllowed;
B(AtomicBoolean isAllowed){
this.isAllowed = isAllowed;
}
public void run(){
if(isAllowed.get()) {
...
}
}
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники