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

标签 java multithreading

对于这个学校作业,我需要使用 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 之一实现。
我还建议您阅读更多有关 "consumer producer 的内容。 “模式。
阻塞队列还消除了“忙等待”的需要,这在多线程编程中是不推荐的。

关于java - 如何使用 Java 线程模拟客户端-服务器应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15038901/

相关文章:

c++ - condition_variable 获取锁速度慢

无法同步我的 C 线程

c++ - 使用 boost::thread::interrupt() 时,您*需要*捕获 thread_interrupted 异常吗?

java - Jenkins 中的编译错误,但 Eclipse 中没有

java - 扭曲的垃圾箱包装?

Java Android Bitmap.createBitmap 过早地超过 src 位图宽度

android - 如何解决致命异常 : Thread-11

java - Android 音频卡在底部扬声器上,无法在我的应用程序中使用耳机。应用程序也卡住

Java多线程原子赋值

c++ - C++并发队列按引用或值进行推送