java doc说append方法是线程安全的。但是,我记得当我尝试从不同的线程(几个月前)使用附加到文本区域时,我得到混乱的文本,其中线程1将附加一些字符,而线程2将附加一些其他字符。 所以我没有在jtextarea中获得STRINGstring,而是获得了SstTrRINingG。
之间会有什么不同:
或者他们都可以解决这个问题吗? 感谢
答案 0 :(得分:7)
虽然append()
相对于EDT 是线程安全的,但Java 7中的append()
却不是。使用invokeLater()
的附加内容将按照enqueued的顺序进行处理。对其他方法的严格审查需要sscce。
答案 1 :(得分:1)
您的所有解决方案对我都不错。由于您无论如何都需要使用某种形式的Invoke来更新UI,因此最好只使用invokeLater
来避免任何其他复杂情况。