Если мы создаем нить, то можем заморозить ее на время в методе run, но каким образом мы можем остановить ее на время извне?
public static void main(String[] args) throws InterruptedException {
Thread t = new Thread() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
try {
sleep(400);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i);
}
}
};
t.start();
Thread.sleep(2000);
// Здесь должна быть команда которая позволяет заморозить выполнение нити t на 3 секунды
System.out.println("Нить t остановлена на 3 секунды");
}
UPDATE: Удалось пока решить вот так, но, может, кто подскажет лучшее решение:
public static void main(String[] args) throws InterruptedException {
class TestThread extends Thread {
private boolean flag;
public void setFlag(boolean flag) {
this.flag = flag;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
try {
sleep(400);
if (flag)
sleepMe();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i);
}
}
private void sleepMe() {
try {
sleep(3000);
flag = false;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
TestThread t = new TestThread();
t.start();
Thread.sleep(2000);
t.setFlag(true);
System.out.println("Нить t остановлена на 3 секунды");
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости