【发布时间】:2015-01-26 10:09:14
【问题描述】:
我正在编写一个 Java 客户端应用程序(带有 TCP/IP 的基本 Java Net 包)。客户端必须从 system.in 获取输入,同时必须通过套接字输入流监听来自服务器的任何消息。 一旦收到来自 system.in 的输入,客户端将获取该输入,进行一些处理并将其作为请求发送到服务器。 所以基本上2个进程运行,
-监听客户端请求
- 监听服务器响应。
我为此实现了 2 个线程并在主线程中运行消息处理。 这样的设计够好吗?
有没有办法将从 system.in 收到的消息返回到主线程。线程 run() 方法返回 void。我使用了一个 volatile 变量来返回接收到的字符串,但它说 volatile 非常昂贵,因为它不使用 cpu 缓存来存储变量。
【问题讨论】:
-
为什么?您只需要在发送请求后获取响应。你不需要两个线程。
-
服务器需要在连接时发送一些定义,所以客户端必须在监听的同时还必须监听来自system.in的请求。跨度>
标签: java multithreading tcpclient