Мне нужно вызвать метод нестатическим методом removeLocksOnExit()
из ShutdownHook.метод объявлен в том же классе, где основной.
В основном у меня есть следующий код:
//final Thread mainThread = Thread.currentThread();
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
// remove lock file...
removeLocksOnExit();
}
});
RemoveLocks () не может быть объявлен статическим, и поэтому я не могу вызватьэто прямо из нового потока.
Основной класс содержит, однако, закрывающие окна действия, которые также вызывают метод.Вот выдержка из кода:
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
if (exit() == 0) {
removeLocksOnExit();
log.info("END");
System.exit(0);
}
}
});
Возможно, я мог бы тогда из addShutdownHook запустить событие закрытия окон.и эта вызовет функцию для меня.(Или создайте специальное событие для цели кэширования ...
Возможно ли это? Если да, как бы вы запустили событие ??
, чтобы лучше понять этоСтруктура моего класса:
public class MyTool extends JFrame{
removeLocksOnExit(){
....
...
}
public static void main(String[] args) {
...............
.........
//final Thread mainThread = Thread.currentThread();
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
// remove lock file...
removeLocksOnExit();
}
});
}
final MyTool inst = new MyTool(args);
MyTool(String[] args) {
super(CustomPathModel.MyTITLE);
setResizable(false); // FIXME find a way to auto size inner xml-editor
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
if (exit() == 0) {
removeLocksOnExit();
log.info("END");
System.exit(0);
}
}
});
setLookFeel();
initAdminStatus();
initGUI();
addToolActionListener(this);
}
}