代码之家  ›  专栏  ›  技术社区  ›  hema chandra

在java中得到响应之前,如何停止方法?

  •  1
  • hema chandra  · 技术社区  · 7 年前

    我编写了一个简单的TCP服务器程序,从客户端接收数据。我的main()方法如下所示:

    Acceptor acceptor = Acceptor.open(new InetSocketAddress(port));
    Session session = acceptor.accept(); //accepts connection from client and returns session object
    FIXSession transport = session.getTransport();
    String str = transport.receive(); // receives data from client
    
    doWork(str); // do the remaining process.
    

    在上面的代码中,我试图使用“transport.receive()”方法从客户端接收数据。如果假设客户端需要一些时间来发送数据,同时我的主程序将进入下一步“doWork(str);”结果为空。如何使main()线程等待,直到从客户端接收到数据。将来,我可能会在其他线程中运行doWork(str)方法。所以我需要让doWork(str)线程等待,直到我从客户端获得数据。有什么办法吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   GhostCat    7 年前

    引用OP:

    即使返回字节数,如果接收的字节数小于0,则必须等待,直到接收的字节数大于0

    因此,将其转化为阻塞调用的直接方法是:

    int numBytes = transport.receive();
    while (numBytes == 0) {
      Thread.sleep(SOME_TIME);
      numBytes = transport.receive();
    }
    

    例如如果您希望代码等待;然后编写等待的代码。但当然,这仍然不能回答如何 事实上 MessageListener