我知道Swing单线程规则(来自 Java Concurrency in Practice ):
应创建,修改和查询Swing组件和模型 仅来自事件派发线程。
反过来也是如此吗?我维护一些事务日志代码,将事件信息写入文件,有时在EDT上执行此操作。这是一种不好的做法吗?
答案 0 :(得分:5)
这取决于你在做什么。基本上,当您使用EDT线程时,它不能做任何其他事情。这意味着按钮点击,处理,用户界面更新等都将停止。
因此,对于长时间运行的任务,您应该使用不同的线程(例如SwingWorker
),但对于任何不太可能停滞或在EDT上花费很长时间的任何线程都可以。