linux 线程 exit,System.exit在Linux上不是线程安全的吗?

我刚刚从Oracle JDK 1.6,切换到打开JDK 1.7.0_03,我已经打了退出一个相当显着的僵局:System.exit在Linux上不是线程安全的吗?

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

at java.lang.Thread.join(Thread.java:1258)

- locked <0x8608dda0> (a sun.awt.X11.XToolkit$1$1)

at java.lang.Thread.join(Thread.java:1332)

at java.lang.ApplicationShutdownHooks.runHooks(ApplicationShutdownHooks.java:106)

at java.lang.ApplicationShutdownHooks$1.run(ApplicationShutdownHooks.java:46)

at java.lang.Shutdown.runHooks(Shutdown.java:123)

at java.lang.Shutdown.sequence(Shutdown.java:167)

at java.lang.Shutdown.exit(Shutdown.java:212)

- locked <0x8603df28> (a java.lang.Class for java.lang.Shutdown)

at java.lang.Runtime.exit(Runtime.java:107)

at java.lang.System.exit(System.java:960)

看来,你必须从AWT调用System.exit事件队列。这是真的吗?在Sun文档中没有关于线程需求的文档Runtime.exit

我已经遇到了其他令人惊讶的情况,只有在Linux上才需要获取AWT树锁,但是这需要蛋糕。这是一个错误,还是我错过了文档中的某些东西?

+2

得到证实僵局的SSCCE(http://sscce.org/)? –

2013-04-04 14:47:09

+0

'System.exit'方法强制终止Java虚拟机中的所有线程。您没有通过使用System.exit修复上述死锁问题,您在死锁发生之前停止该程序。当你正常停下来时,你的其他线程在没有主线程的帮助下继续运行,显然如果没有线程就不能这样做。 –

2013-04-04 14:57:04

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值