我需要用Java编写一个线程化的TCP客户端,但我不确定如何最好地构建它。我希望客户端在另一个线程上运行,以便不阻塞主线程。
理想情况下,我会在主线程上创建客户端,然后指示客户端连接到服务器。可能需要一些时间的连接将在另一个线程上发生。一旦客户端连接,它将通知主线程并开始侦听来自服务器的传入消息。收到消息后会通知主线程。
目前我的计划是让TCP客户端类实现Runnable并在run方法中执行连接和接收。
我很感激有关如何构建tcp客户端的任何想法。
答案 0 :(得分:1)
构建您的应用程序时应考虑的一些事项:
理想情况下,应该有单独的线程来读写网络流。否则可能会有问题。
2.如果您想“通知”其他线程有关某事或传递某些内容,请考虑Java“条件”习语/对象和/或阻塞队列/ Deques。
答案 1 :(得分:0)
查看JBoss Netty并使用符合您需求的Queue实现处理线程之间的通信。
Netty有一个引导学习曲线,但它有一个易于维护的设计,并且只要你不需要UDP传输(然后我会看看Apache Mina)它就足够了。此外,您不需要使用Netty实现状态机。