一个非常不清楚的错误,有时会在Java中断我的线程

时间:2013-11-27 23:49:46

标签: java multithreading synchronization interrupted-exception

我知道我应该为特殊错误提供足够的信息。但是不可能重现它。我有一个高度多线程的程序。我有一个带有无限while循环的线程。程序的任何部分都不能中断此线程。我尽可能多地检查Thread.currentThread().isInterrupted();。  但有时会发生线程停止运行时出现一个奇怪的异常堆栈跟踪,它告诉它无法将某些类型转换为某些Lable的setText方法中的布尔值,它指向程序的以下行:

JOptionPane.showMessageDialog(null, "action finished, going to the next!");

我知道我应该以不同的方式思考!因为我没有标签来设置在这个帖子中完成的文本。事实上,在整个程序中,我从不更改GUI的任何文本。我只是写到控制台。可能是什么问题?它可能是我的代码中的内存泄漏,也可能是Java的错误?

1 个答案:

答案 0 :(得分:3)

我认为这里的问题是你不应该直接调用showMessageDialog。 Swing期望所有GUI操作都通过主Swing线程,而as reported in this answer我怀疑这里的问题是你的线程(不应该直接触摸GUI)和Swing线程(这是应该处理这个。)

您可以考虑从showMessageDialog或使用SwingWorker开始关注invokeLater

希望这有帮助!