我有一个带有2种不同类型线程的msgs服务器,一个从客户端读取,另一个在另一个客户端写入(取决于接收器)......(是的,它必须是这样的,我不能在同一个线程中读/写...)
我基本上需要将所有消息存储在ArrayList(Server ?)
中的某个位置,将其保留,直到另一个客户端连接到服务器。
我的问题是:
我可以轻松地从Thread中读取对象,但是我无法看到任何方法将对象提取到共享的ArrayList,以便在另一个线程中获取对象。
--->Input Thread ---> ArrayList ---> OutputThread
答案 0 :(得分:1)
听起来你真正需要的是一个线程安全的队列,不一定是ArrayList。 BlockingQueue接口专门用于此类事情。您的输入线程可以将消息放入队列,输出线程可以删除它们。如果输出线程尝试从中获取消息时队列为空,则它会自动等待输入线程添加消息。
有许多类实现了BlockingQueue接口,但您可能希望使用以下两种类型之一: