mirror of
https://github.com/LamGC/Oracle-Sentry.git
synced 2025-04-30 06:37:42 +00:00
fix: 修复主线程阻塞唤醒失败的问题.
当程序退出, 触发 ShutdownHook 时, 由于未进入 mainThreadWaiter 对象线程锁范围, 所以会导致 notifyAll 调用失败.
This commit is contained in:
parent
b5d0e0f6a0
commit
4b03b7cc1e
@ -21,12 +21,18 @@ public class ApplicationMain {
|
|||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(ApplicationMain.class, args);
|
SpringApplication.run(ApplicationMain.class, args);
|
||||||
Runtime.getRuntime().addShutdownHook(new Thread(mainThreadWaiter::notifyAll, "ShutdownMainThread"));
|
|
||||||
|
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||||
|
synchronized (mainThreadWaiter) {
|
||||||
|
mainThreadWaiter.notifyAll();
|
||||||
|
}
|
||||||
|
}, "ShutdownMainThread"));
|
||||||
|
|
||||||
synchronized (mainThreadWaiter) {
|
synchronized (mainThreadWaiter) {
|
||||||
try {
|
try {
|
||||||
mainThreadWaiter.wait();
|
mainThreadWaiter.wait();
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
log.warn("", e);
|
log.warn("主线程发生中断.", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user