【发布时间】:2012-09-20 22:23:10
【问题描述】:
假设 Thread-1 在对象上同步
synchronize(object){
//statement1
//statement2
//statement3
}
如果 Thread-1 在 statement2 上崩溃,对象上的锁会发生什么情况,当这种情况发生时,JVM 会自动释放 Thread-1 上的锁吗?因为否则如果 Thread-2 正在等待释放对象上的锁并且 Thread-1 崩溃,那么 Thread-2 将永远等待。
【问题讨论】:
-
可以肯定的是,线程不会“崩溃”。他们可以抛出异常,但不会像 C 那样进行段错误或核心转储。您可能会遇到 [非常] 奇怪的 JVM 错误,但在这种情况下,整个 Java 进程都会崩溃。这种情况极少发生。
标签: java multithreading synchronization