Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java invokeLater vs invokeAndWait与JTextArea_Java_Swing_Invokelater - Fatal编程技术网

Java invokeLater vs invokeAndWait与JTextArea

Java invokeLater vs invokeAndWait与JTextArea,java,swing,invokelater,Java,Swing,Invokelater,我有一个在多线程上运行的Swing应用程序,我在EDT上创建了Swing组件。执行器启动线程,在某个点向JTextArea插入文本。然而,与InvokeAndWait不同,InvokeAndWait并不总是进行追加。据我所知,它是一个不连续的、非阻塞的,但仍然应该进行附加。怎么可能呢 感谢使用EventQueue.invokeLater()从另一个线程更新组件的模型是正确同步的必要条件,但不是充分条件。您仍然需要同步访问任何共享数据。在这种情况下,display()参数s是对不可变的字符串的最终

我有一个在多线程上运行的Swing应用程序,我在EDT上创建了Swing组件。执行器启动线程,在某个点向JTextArea插入文本。然而,与InvokeAndWait不同,InvokeAndWait并不总是进行追加。据我所知,它是一个不连续的、非阻塞的,但仍然应该进行附加。怎么可能呢


感谢使用
EventQueue.invokeLater()
从另一个线程更新组件的模型是正确同步的必要条件,但不是充分条件。您仍然需要同步访问任何共享数据。在这种情况下,
display()
参数
s
是对不可变的
字符串的
最终
引用;它可以在
display()
中安全访问,无需进一步同步。如果您有一个<代码>最终的<代码>引用一个可变对象,请考虑一个。您可以使用引用的方法之一查找违规行为。另一方面,考虑a来承载后台任务,对于.

使用<代码> EngestReal.EnvutelAtter()/Cux>从另一个线程更新组件的模型是正确同步的必要条件但不是充分条件。您仍然需要同步访问任何共享数据。在这种情况下,
display()
参数
s
是对不可变的
字符串的
最终
引用;它可以在
display()
中安全访问,无需进一步同步。如果您有一个<代码>最终的<代码>引用一个可变对象,请考虑一个。您可以使用引用的方法之一查找违规行为。或者,考虑a来承载后台任务,对于.< /p>它们都附加到队列的末尾。我不确定您的意思是什么?
“InvokeLater并不总是进行追加…”
,您的代码中可能有一个bug,并且可能不涉及InvokeLater本身,但它正在揭开它的面纱。是时候做一些调试了。我们已经做了这么长时间了,但感谢您清除了这些错误,我想错误可能在其他地方。@hovercraftfullofels关于问题被揭露的说法可能是正确的。当某些东西不总是起作用时,应怀疑同步错误。它们都附加到队列的末尾。我不确定您的意思是什么?
“InvokeLater并不总是进行追加…”
,您的代码中可能有一个bug,并且可能不涉及InvokeLater本身,但它正在揭开它的面纱。是时候做一些调试了。我们已经做了这么长时间了,但感谢您清除了这些错误,我想错误可能在其他地方。@hovercraftfullofels关于问题被揭露的说法可能是正确的。当某些东西不总是起作用时,请怀疑同步有误。考虑到提供的数据,这是一个尽可能好的答案。希望OP能提供更具体的数据,以便您能给出更具体的建议。谢谢你的回答!鉴于提供的数据,这是一个尽可能好的答案。希望OP能提供更具体的数据,以便您能给出更具体的建议。谢谢你的回答!