Полагаю, вы говорите о многопоточном приложении.Очевидное решение состоит в том, чтобы разделить потоки на подклассы и внедрить возможность устанавливать флаги в потоке.
public void run() {
while (keepRunning && notSuspended) {
doNextItem(...);
}
while (notSuspended == false) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// do nothing but continue
}
}
}
public void suspend() {
notSuspended = false;
}
public void resume() {
notSuspended = true;
}
public void kill() {
keepRunning = false;
}
Возможны другие решения, которые захватывают поток изнутри внутренних частей JVM (например, используя интерфейс JDI).);однако на самом деле не представляется возможным разработать код для поддержания согласованного состояния, когда потокам мешают извне.Проект, который интернализует покой потока в согласованном состоянии, очень предпочтителен, если вы действительно хотите убедиться, что состояние программы правильно согласовано после приостановки потока.