有拍卖服务器接受客户端,并为每个套接字连接一个新的线程服务客户端。每个线程都有它的协议。服务器只有一个拍卖对象的实例。 Auction
对象保存了对象的列表Lot
。 Auction
对象作为参数传递给客户端线程。 Protocol
必须有办法投标并以某种方式通知所有客户线程。方法存在于Lot
中,它对出价列表进行出价。下一步是通知所有客户端线程形式makeBid
的方法。最佳做法是什么? 如何使用共享资源与其他线程通信?
我试图在Thread中使用一个字段(MSG)来保存消息。线程检查是否!MSG.isEmpty()
而run()
。如果!MSG.isEmpty()
然后ClientThread
打印到此套接字MSG
。我认为有一个更好的解决方案。
public class ClientServiceThread extends Thread {
public String PRINT_NEW_MSG = "";
while (m_bRunThread) {
if(!PRINT_NEW_MSG.isEmpty()){
out.println("PRINT_NEW_MSG: "+PRINT_NEW_MSG);
PRINT_NEW_MSG = "";
String clientCommand = in.readLine();
...
}
}
是否有任何特殊的原因,您不能让线程等待'BlockingQueue',也许是出价消息? –
这是你的领域的好主意。我更喜欢所有客户都会被告知的观察员。所有客户都需要在观察员身上注册。只有一个实例 - 比如你的服务器对象是一个好主意。 (用观察者扩展你的服务器)。 [链接] http://en.wikipedia.org/wiki/Observer_pattern – glenn