Я бьюсь головой об парту, друзья. Это то, что я пытаюсь сделать. У меня есть основной класс, который создаст новый поток. Прямо сейчас, когда поток завершит работу, он выполнит некоторую незначительную очистку, и поток остановится. Тем не менее, у меня есть кнопка «Стоп» в пользовательском интерфейсе, которая при нажатии должна «выполнить некоторую очистку, а затем уничтожить поток. Проблема в том, что я не могу обновить что-либо внутри того нового потока, который я создал» .
Вот некоторые фрагменты:
Основной класс
runner = new Thread(new Controller1(options));
runner.start();
В вышеприведенном коде я вызываю свой класс Controller1 и устанавливаю некоторые «опции» в конструкторе. Пока это работает хорошо ...
Теперь, в классе Controller1, это то, что у меня есть ...
public volatile static boolean stopped;
public void run() {
while(!stopped ){
System.out.println("In run");
startProxy(proxyPort);
startWebDriver();
driver.get(http);
UIMainJSwing1.updateStartButton();
stopped=true;
}
//Run killAll to stop webdriver and the proxy
killAll();
System.out.println("Thread complete");
}
Проблема в том, что из основного класса я не могу позвонить или установить "остановлено" в true. Я могу вызвать runner.interrupt (), но проблема в том, что, поскольку поток просто умирает, моя функция killAll () никогда не запускается, и у меня остаются работающие WebDriver и Proxy.