我有一个沉重的java项目,它不能响应用户。我发现在事件调度线程中需要很长时间才能使我的项目工作缓慢。所以,我有两个问题:
答案 0 :(得分:1)
通常,缓慢是由无意中尝试从UI线程访问文件系统,网络或数据库的代码引起的。一旦找到原因,通常很容易修复SwingWorkers。
Replace the Event Dispatch Queue,其实现监视队列中的事件需要处理多长时间。
当一个事件花费太长时间时,新队列实现会记录EDT的堆栈跟踪 如果您只是习惯于在抛出异常时查看堆栈跟踪,请不要惊慌。新的实现不会杀死慢速事件或导致它们抛出异常,它只是向您显示在检测到无响应时EDT正在做什么。 查看打印的堆栈跟踪,找出如何将事件的缓慢部分移动到另一个线程中。
我相信Netbean的慢度检测器实现了非常相似的功能。
答案 1 :(得分:-1)
您需要提供更多详细信息......但是线程本身没有队列。您无法检查线程上正在等待的工作,您只能检查任何给定线程的状态(比如在线程池中)。
如果你有一个" work"需要排队等待最终由给定的"工人" (即线程)你必须自己实现。或者你可以使用一个演员系统,如AKKA,这听起来像你需要的那样