gpt4 book ai didi

java - UDP - 多线程

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:09 32 4
gpt4 key购买 nike

基本上,我有一个图形 Swing 应用程序。我需要使用 UDP 发送和接收数据,但我不希望在应用程序代码中进行任何接收(数据包)调用。我决定在单独的线程上运行程序的接收端。该线程有一个 int 字段,该字段会更新为传入数据包中的值。我如何从线程中获取该字段的值。我可以只调用该字段的 get 方法吗,还是必须先中断线程?

最佳答案

尽管 GUI 线程可以安全地读取 int getter(假设适当的同步或 volatile 变量),但请考虑花时间使用 SwingWorker因为它会让你的应用程序响应更快。基本上,您可以用 SwingWorker 对象替换自定义线程。现在 run() 中的代码位于 SwingWorker.doInBackground() 中。

您启动工作线程,doInBackground 代码在单独的线程中执行。据推测这是一个 UDP 接收循环。当你的循环收到一个新的 int 时,你调用 publish (仍在后台线程中)。这将导致在事件线程中调用另一个 SwingWorker 方法 process (您已使用一些自定义代码覆盖该方法)。在这里您可以安全地更新您的 GUI,因为您正在事件线程中运行。

这样就无需创建计时器来轮询 UDP 线程的 getter。 UI 的响应速度更快,因为接收 -> 发布 -> 处理顺序非常快。

关于java - UDP - 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13115115/

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