繁体   English   中英

如何使用Java线程模拟客户端服务器应用程序?

[英]How can I simulate a Client-Server application using Java threads?

对于此学校作业,我需要使用Java线程(无需套接字等)来模拟客户端服务器类型的应用程序。 我该怎么做呢?

我需要一种服务器启动方法,等待客户端调用它,然后它应该返回响应。 我脑海中的“ API”类似于:

server.start()
client1.connect(server)
client2.connect(server)

x = client1.getData()
y = client2.getData()

success1 = client1.sendData(1)
success2 = client2.sendData(2)

server | client.run方法的外观如何? 假设我现在可以对方法调用进行硬编码。

我建议使用以下方法:
1.具有可与Blocking Queue一起使用的“服务器”代码-
阻塞队列是一种已同步的数据结构,让我们从中读取数据的线程(“消费者”线程)等待直到队列中有待读取的数据。
“生产者”线程是“推送”队列中数据的线程。
我建议您使用一种阻塞队列实现。
我还建议您阅读有关“消费者生产者 ”模式的更多信息。
阻塞队列还消除了在多线程编程中不建议的“忙等待”。

根据您提供的说明,我可以建议您应该写一些类似的内容

1)有一个队列,所有客户端都可以在该队列中发送消息。

2)正在像while(true)这样的无限循环中运行的服务器等待已放入队列中的新消息,如果找到了新消息,则对其进行处理并将其标记为已处理。

3)客户端线程的工作是创建消息并将其放入队列。 并通知服务器新消息已添加到队列中,以便服务器可以知道新消息已到达以进行处理。

为了使该程序正常工作,我认为您需要学习Thread的notify,notifyAll()和wait()方法。 因此,基本上没有套接字,您在找什么“线程间通信”。 链接可以提供帮助。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM