Java 从线程获取消息
在第一个类中,有方法“listen”,用于监听客户端套接字Java 从线程获取消息,java,multithreading,Java,Multithreading,在第一个类中,有方法“listen”,用于监听客户端套接字 public void listen() throws IOException { while (true) { socket = this.serverSocket.accept(); DataOutputStream out = new DataOutputStream( socket.getOutputStream() );
public void listen() throws IOException {
while (true) {
socket = this.serverSocket.accept();
DataOutputStream out = new DataOutputStream( socket.getOutputStream() );
this.outputStreams.put(socket, out);
Thread miltiServer;
miltiServer = new Thread() {
@Override
public void run() {
InputStream sin = null;
try {
sin = socket.getInputStream();
ObjectInputStream in = new ObjectInputStream(sin);
message = (AgentData) in.readObject();
} catch (ClassNotFoundException ex) {
} catch (IOException ex) {
}
}
};
miltiServer.start();
}
在第二个类中,我需要读取和分析从客户端套接字接收的消息。我不知道如何在其他课堂上获得信息。我想使用可调用接口,但若我使用它,return语句将退出不定式循环 套接字侦听器将消息传递给第二个
类的一种简单方法是通过。侦听器将读取套接字输入流并调用queue.put(…)
将任何消息添加到队列中
然后第二个类将在一个循环中调用queue.take()
将在消息添加到队列时返回每个消息。如果你想让无限的消息排队,那就行了。如果您想限制消息,那么像这样的有界队列可能更合适
两个线程都需要共享相同的BlockingQueue
,因此您需要构造它并将其传递给两个线程,或者在名为addMessage(…)
的Second
类上放置一个方法,而BlockingQueue
将位于Second
类的内部。然后侦听器将调用second.addMessage(…)代码>