gpt4 book ai didi

java - 如何从 Swing Gui 访问同步缓冲区?

转载 作者:行者123 更新时间:2023-12-03 10:25:20 25 4
gpt4 key购买 nike

我必须编写一个 GUI 应用程序,该应用程序使用 RMI 在多个客户端之间保持一致的状态。

因为 RMI 调用会阻塞,所以我将它们放在与 GUI 线程不同的线程中。要将信息推送到 GUI 线程或从 GUI 线程推送信息,我的第一个想法是使用同步缓冲区。

但是如果我在 Buffer 上调用同步方法,GUI 将会卡住。如果我不使用 synchronized 关键字,Buffer 将不是线程安全的。

来自 Java 文档:

It is not possible for two invocations of synchronized methods on the same object to interleave. When one thread is executing a synchronized method for an object, all other threads that invoke synchronized methods for the same object block (suspend execution) until the first thread is done with the object.

是否有其他替代方法可以使缓冲区线程安全并且不会卡住 GUI。

最佳答案

一种方法是使用 Model–View–Controller pattern 将模型数据与 View 分开, 如图所示 here , herehere .在最后一个示例中,模型在后台线程上发展, View 使用 javax.swing.Timer 定期更新。 SwingWorker,图文并茂here , 是另一种选择。

关于java - 如何从 Swing Gui 访问同步缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12135571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com