在完成任务之前从线程返回数据。 (JAVA)

时间:2015-07-03 09:12:36

标签: java multithreading client-server

客户端/服务器应用程序。 多个客户端可以连接到服务器。 对于每个客户端连接,服务器创建新线程。 客户端发送数据,直到它关闭套接字。 所以我需要每次都将由线程服务器管理的数据返回给主服务器。我不能等待线程完成他的工作,因为我不知道客户端什么时候关闭连接。 什么是正确的方法?

1 个答案:

答案 0 :(得分:0)

创建线程时,您可以将共享队列作为参数传递。在线程的主体中,当您从客户端获取数据时,将其推送到队列中。在您的服务器循环中轮询队列中的数据并使用它。 ConcurrentLinkedQueue应该合适。例如:

// main server thread
Queue<SomeData> queue = new ConcurrentLinkedQueue<>();

// ... loop code, etc
Thread thread = new MyThread(queue);

// in thread responsible for GUI updates
SomeData data = queue.poll();
if (data != null) // do something

// client connection thread
SomeData data = ... // received from client
queue.offer(data);