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

时间:2017-07-20 05:49:26

标签: java multithreading client-server nio

我编写了一个简单的TCP Server程序,它从客户端接收数据。我的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);”结果为null。如何让main()线程等到我从客户端接收数据。将来我可以在其他线程中运行doWork(str)方法。所以我需要让doWork(str)线程等到我从客户端获取数据。有什么办法吗?

1 个答案:

答案 0 :(得分:0)

引用OP:

  

即使它返回字节数,如果接收的字节数小于0,那么它必须等到接收的字节大于0

所以,将此转变为阻止通话的直接方式是:

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

。如果你想要代码等待;然后编写等待的代码。但是,当然,仍然没有回答如何实际接收消息。因为您需要MessageListener来实际接收消息。