Необходимо написать 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()) {
...
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Неожиданно обнаружил неработающий код при тестировании под Андроид8
Разбираюсь в Spring Social по этому туториалу http://wwwbaeldung
Получаю информацию о юзере c помощью такого запроса: