Java:我应该在事件调度线程(EDT)中记录问题吗?

Java:我应该在事件调度线程(EDT)中记录问题吗?,java,event-dispatch-thread,Java,Event Dispatch Thread,我想知道直接在事件调度线程中写入日志文件是否可以接受。我知道一个经验法则是避免EDT中的长时间操作,但是我不确定对文本文件的一次写入是否属于这一类。我目前有工作线程这样做,但我遇到了一些奇怪的异常。在研究这些异常之前,我想我会看看直接在EDT中写日志是否合适。正如我所说,这些书写相对较少,也不频繁 提前谢谢 我建议将此发送到。这将把实际的文件注销交给后台线程。但是,如果您使用的是log4j之类的框架,您应该首先研究库执行的缓冲或其他多线程处理。如果您的应用程序一直保持响应(我猜是的),我看不出您

我想知道直接在事件调度线程中写入日志文件是否可以接受。我知道一个经验法则是避免EDT中的长时间操作,但是我不确定对文本文件的一次写入是否属于这一类。我目前有工作线程这样做,但我遇到了一些奇怪的异常。在研究这些异常之前,我想我会看看直接在EDT中写日志是否合适。正如我所说,这些书写相对较少,也不频繁


提前谢谢

我建议将此发送到。这将把实际的文件注销交给后台线程。但是,如果您使用的是log4j之类的框架,您应该首先研究库执行的缓冲或其他多线程处理。

如果您的应用程序一直保持响应(我猜是的),我看不出您为什么不这样做。向文件中写入一行非常快:速度快到人眼看不见的程度。@jbnize我知道它非常快,但我想我担心的另一件事是,如果写入失败,或者发生其他异常,它会开始锁定GUI。如果我在这里离基地很远,没有什么可担心的,请让我知道,这就是我问的原因。我真的很感谢您的帮助。日志程序引发的异常不会锁定GUI。它将使堆栈冒泡,并使当前事件侦听器方法失败,然后一切都将继续工作。当然,它可能会使您的程序处于不一致的状态,但它与EDT中可能发生的任何其他异常都没有区别。日志方法引发异常的概率非常小。如果您真的担心这一点,可以将日志包含在try/catch子句中,但我会检查日志框架是否已经这样做了。您建议这样做的具体原因是什么?在上面的评论中,我被告知在EDT中这样做应该是可以的,因为这是一个如此快速的操作。如果您有任何见解,请详细说明,我很想了解更多。谢谢如前所述,这取决于您的日志记录方式。如果您使用的是像Log4J这样的框架,那么可能不会有什么不同。不过,一般来说,最好避免在事件线程上潜在的长时间运行IO——这当然没有什么区别,但如果您担心,将执行交给工作线程也无妨。