У меня есть приложение для свинга. После нажатия на пункт меню в строке меню я пытаюсь выполнить вызов API, который предположительно займет некоторое время.
Я не хотел, чтобы приложение Swing зависало / зависало до тех пор, пока вызов API не даст своего результата, поэтому я использовал SwingUtilities.invokeLater, чтобы отделить вновь созданный поток, который позаботится о вызове API. Ниже приведен код для выше
public void actionPerformed(ActionEvent e){
Object src=e.getSource();
if(src.equals(theJMenuItemClicked)){
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
//apicall here
}
})
}
Пока работает поток вызовов API, я показываю JDIalog с сообщением «Выполняется вызов API» и кнопкой «Прервать поток».
Я бы хотел убить тему, нажав кнопку "ABort Thread" в Jdialog.
Если это обычный поток, у нас есть Thread t = new Thread(new Runnable())
, и мы вызываем t.stop
для того же.
Как мне получить этот конкретный экземпляр потока, порожденный SwingUtilities, чтобы я мог вызвать остановку на нем? Проще говоря, как я могу уничтожить созданный выше поток?