Java 使用SwingWorker实现UDP客户机/服务器

Java 使用SwingWorker实现UDP客户机/服务器,java,swing,concurrency,swingworker,Java,Swing,Concurrency,Swingworker,正在尝试使用Swing编写UDP客户端服务器应用程序。客户端的每个实例都应该能够(从事件调度线程)向服务器发送消息,并且还可以连续侦听通过服务器转发的其他客户端的消息(在使用SwingWorker的工作线程上)。我现在正在尝试实现一个ListenWorker类,它的doInBackground方法将持续侦听UDP数据报,并将数据发布到process()方法,同时将使用消息更新客户端JFrame上的JTextArea。然而,由于缺乏SwingWorker和一般Swing并发性方面的经验,我遇到了一

正在尝试使用Swing编写UDP客户端服务器应用程序。客户端的每个实例都应该能够(从事件调度线程)向服务器发送消息,并且还可以连续侦听通过服务器转发的其他客户端的消息(在使用SwingWorker的工作线程上)。我现在正在尝试实现一个ListenWorker类,它的doInBackground方法将持续侦听UDP数据报,并将数据发布到process()方法,同时将使用消息更新客户端JFrame上的JTextArea。然而,由于缺乏SwingWorker和一般Swing并发性方面的经验,我遇到了一些困难。以下是我到目前为止编写的代码的要点:

public class ListenWorker extends SwingWorker<void, String> {

    public ListenWorker(int port, JTextArea textArea){
        // set up socket
    }

    protected void doInBackground(){
        while(true){
            // code to receive Datagram
            publish(messageFromDatagram);
        }
    }

    protected void process(List<String> messages){
        for(String message : messages){
            textArea.append(message);
        }
    }
}
公共类ListenWorker扩展SwingWorker{
public ListenWorker(int端口,JTextArea textArea){
//安装插座
}
受保护的void doInBackground(){
while(true){
//接收数据报的代码
发布(messageFromDatagram);
}
}
受保护的无效进程(列出消息){
用于(字符串消息:消息){
textArea.append(消息);
}
}
}
然而,我的IDE在我开始类定义的第一行给了我一个错误,说“非法开始类型”,因为在那里无效。就我所见,我希望我的doInBackground是一个void方法,因为我希望它无限期地运行,监听来自不同客户端的数据报。Java似乎不想让我把它作为一个无效的方法。我该如何编写代码来解决这个问题?

您可能希望表示
doInBackground()
返回类型;例如
SwingWorker


附录:
doInBackground()
返回null

现在尝试,将doInBackground的返回类型更改为Void,但我究竟返回什么?我尝试了return void和return void,但是在这两个函数上都出现了错误,添加了return null,编译器错误消失了,谢谢。