Java 从线程获取消息

Java 从线程获取消息,java,multithreading,Java,Multithreading,在第一个类中,有方法“listen”,用于监听客户端套接字 public void listen() throws IOException { while (true) { socket = this.serverSocket.accept(); DataOutputStream out = new DataOutputStream( socket.getOutputStream() );

在第一个类中,有方法“listen”,用于监听客户端套接字

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(…)