MAC机上JAVA对话框死锁的案例之一

简介: MAC机上JAVA对话框死锁的案例之一

应用启动,弹出对话框,死锁。这个问题在某个机器上很容易出现,在其他机器上则很难。原因是什么呢?


写了个简单的程序,弹出对话框并不死

启动了一个线程,在线程中弹出对话框

这个问题好解决。


分析

同事仔细研究了以下死锁:

"AWT-EventQueue-0" #12 prio=6 os_prio=31 tid=0x00007f8d85aed800 nid=0xbe37 runnable [0x000070000b881000]
   java.lang.Thread.State: RUNNABLE
  at sun.lwawt.macosx.CWrapper$NSWindow.isKeyWindow(Native Method)
"AppKit Thread" #9 daemon prio=5 os_prio=31 tid=0x00007f8d85380800 nid=0x103 waiting for monitor entry [0x00007ffedfdfc000]
   java.lang.Thread.State: BLOCKED (on object monitor)
  at java.awt.Component.getLocationOnScreen(Component.java:2036)

 二者一个等待一个死锁。同事猜测是重载对话框后,重载getExtendedState()调用导致函数的。去掉正常。


 这也是常见的事情。

目录
相关文章
|
4天前
|
Java
在Java中,死锁是指两个或多个线程互相等待对方释放资源,从而导致所有线程都无法继续执行的情况。
【6月更文挑战第24天】在Java并发中,死锁是多线程互相等待资源导致的僵局。避免死锁的关键策略包括:防止锁嵌套,设定固定的加锁顺序,使用`tryLock`带超时,避免无限等待,减少锁的持有时间,利用高级同步工具如`java.util.concurrent`,以及实施死锁检测和恢复机制。通过这些方法,可以提升程序的并发安全性。
13 1
|
23小时前
|
JSON Java 数据安全/隐私保护
一篇文章讲明白Java第三方支付接入案例(支付宝)
一篇文章讲明白Java第三方支付接入案例(支付宝)
|
23小时前
|
JSON Java 数据安全/隐私保护
一篇文章讲明白Java第三方支付接入案例(支付宝)
一篇文章讲明白Java第三方支付接入案例(支付宝)
10 0
|
2天前
|
Java BI Serverless
Java8 Stream深度解析:30个案例3万字助你精通集合筛选、归约、分组与聚合操作
Java8 Stream深度解析:30个案例3万字助你精通集合筛选、归约、分组与聚合操作
8 0
|
2天前
|
设计模式 算法 Java
Java中的设计模式:实战案例分享
Java中的设计模式:实战案例分享
|
3天前
|
Java
java线程之死锁
java线程之死锁
9 0
|
4天前
|
Java
java的lambda延时执行特性案例
java的lambda延时执行特性案例
7 0
|
4天前
|
Java
synchronized关键字在Java中为多线程编程提供了一种简便的方式来管理并发,防止数据竞争和死锁等问题
Java的`synchronized`关键字确保多线程环境中的数据一致性,通过锁定代码段或方法防止并发冲突。它可修饰方法(整个方法为临界区)或代码块(指定对象锁)。例如,同步方法只允许一个线程执行,同步代码块则更灵活,可锁定特定对象。使用时需谨慎,以避免性能影响和死锁。
10 0
|
7天前
|
Java 测试技术 开发者
Java Socket编程实战案例:打造实时通信应用
【6月更文挑战第21天】Java Socket编程用于构建实时通信应用,如简易聊天系统。阻塞式Socket在读写时会阻塞线程,适合入门级应用。非阻塞式Socket(NIO)更高效,适用于高并发场景,允许线程在无数据时立即返回。通过对比两者,可理解实时通信技术的选择关键。示例代码展示了服务器端和客户端的实现。学习Socket编程能为应对未来挑战打下基础。
mac上安装和卸载java的jdk
mac上安装和卸载java的jdk
775 0