Ben tam benim sorum @Tej Kiran tarafından sorulan bir soru here gördüğüm ama cevap verilmemiş, son yorum diyor ki:Kapatma kancasının kilitlenmesini nasıl önleyebilirim?
"senin kayıtlı herhangi bir kapatma kanca varsa biliyor musunuz uygulama, ya da kullanmakta olduğunuz kütüphanelerden herhangi biri kapatma kancası var mı? Kapatma kancası bir iş parçacığıdır ve bu iş parçacığının hiçbir zaman sonlanmasına neden olmayan bir kilitlenme varsa, JVM hiçbir zaman çıkmaz. "
programıma
Runtime.getRuntime().addShutdownHook(new Thread("Shutdown Hook") {
@Override
public void run() {
System.out.println("---------------");
System.out.printf("%d threads running%n", Thread.activeCount());
Map<Thread, StackTraceElement[]> threads = Thread
.getAllStackTraces();
for (Entry<Thread, StackTraceElement[]> e : threads.entrySet()) {
Thread t = e.getKey();
System.out.printf("%s\t%s\t%s%n", t.getName(),
t.isDaemon(), t.isAlive());
StackTraceElement[] elements = e.getValue();
for (StackTraceElement trc : elements) {
System.out.println("\t" + trc);
}
}
System.out.println("---------------");
try {UIUtil.cancelAllTasks();} catch (Throwable e) {e.printStackTrace();};
try {mehad.io.port.ScannerManager.disableAutoHandshake();} catch (Throwable e) {e.printStackTrace();};
try {mehad.io.port.ComPortInterface.getInstance().close();} catch (Throwable e) {e.printStackTrace();};
try {
if (lockStream != null) {
lockStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
});
bir yöntem kapatma kanca vardır Ama kapatma çengel kilitlenme varsa ayırt bilmiyorum ve eğer varsa, nasıl çözmek için .
-3 öldürmeyi denediniz mi? ya da üzerinde jstack? –
Bunu nasıl yapacağımı bilmiyorum? @ThomasKrieger –
Windows veya linux kullanıyor musunuz? –