Java同步问题
只是寻求对某些事情的确认:
我有一个带有 Swing GUI 的服务器对象,其中包含一个由外部线程访问的方法 handle()
和另一个方法 doThis()
,它从服务器对象的 GUI 运行。
据我了解,Swing 事件处理发生在事件分派线程上,因此实际上是事件分派线程访问 doThis()
。
doThis()
和 handle()
可能会产生干扰。为了避免这种情况,我应该使这两个方法同步,对吗?这将防止事件分派线程和其他外部线程在一个方法完成之前调用另一个方法。
我的推理正确吗?
Just seeking some confirmation on something:
I have a server object with Swing GUI, containing a method handle()
, which is accessed by external threads, and another method doThis()
, which is run from the server object's GUI.
I understand that Swing event handling takes place on the event dispatch thread, so it's actually the event dispatch thread that accesses doThis()
.
There is a possibility that doThis()
and handle()
will result in interference. To avoid that, I should make both methods synchronized right? This will prevent the event dispatch thread and the other external threads from calling one method before the other is completed.
Is my reasoning correct?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
相反,请使用
SwingWorker
< /a>;TwoRoot
是一个简单的例子。将
handle()
放在后台,将doThis()
放在process()
中。Instead, use
SwingWorker
;TwoRoot
is a simple example. Puthandle()
in the background anddoThis()
inprocess()
.来自同步的 Java 教程:
所以是的。
From the Java tutorial on synchronization:
So yes.