gpt4 book ai didi

Java SwingWorker - 使用发布/处理更新 EDT 中的 TextArea?

转载 作者:行者123 更新时间:2023-11-29 06:12:35 25 4
gpt4 key购买 nike

我刚刚编写了一个启动 SwingWorker(运行套接字服务器)的 Swing 程序。我在 Swing GUI 上有一个 JTextArea,它使用 JTextArea.append(String) 使用 Socket 服务器接收到的数据进行更新。

这是在 Swing GUI 上更新 JTextArea 的正确/线程安全方式吗?使用发布/处理怎么样?

最佳答案

SwingWorker 通常用于一次性长时间运行的进程(任何需要超过几毫秒才能完成的进程)。如果您有持久连接,使用将运行该进程的专用 ExecutorService 会更合适,然后当您要更新 swing 组件时调用

SwingUtilities.invokeLater(new Runnable() { 
public void run() {
.. update here
}
}

这样做的原因是 SwingWorker 使用固定的线程池大小,因此如果您有一个永远不会完成的进程,它会限制其他 SwingWorker 可以同时使用的线程数

关于Java SwingWorker - 使用发布/处理更新 EDT 中的 TextArea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6283297/

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