Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在一个线程中等待某些数据在另一个线程中可用_Java_Sockets - Fatal编程技术网

Java 如何在一个线程中等待某些数据在另一个线程中可用

Java 如何在一个线程中等待某些数据在另一个线程中可用,java,sockets,Java,Sockets,我正在尝试将TCP服务器添加到我的应用程序中。我的应用程序会不时生成一些数据。我希望在生成一些新数据后,立即将生成的数据发送到连接到我的服务器的所有客户端 到目前为止,我已经在一个单独的线程中创建了一个ServerSocket,该线程忙于等待客户端连接。连接新客户端时,将为该套接字生成一个新线程,该线程将忙于读取从套接字接收的任何数据 我不明白的是,我怎么能在每个客户端生成的线程中等待,直到在我的应用程序中生成一些数据。在当前情况下,由于线程忙于等待来自客户端的数据,因此线程会一直处于停滞状态,

我正在尝试将TCP服务器添加到我的应用程序中。我的应用程序会不时生成一些数据。我希望在生成一些新数据后,立即将生成的数据发送到连接到我的服务器的所有客户端

到目前为止,我已经在一个单独的线程中创建了一个
ServerSocket
,该线程忙于等待客户端连接。连接新客户端时,将为该
套接字生成一个新线程,该线程将忙于读取从
套接字接收的任何数据


我不明白的是,我怎么能在每个客户端生成的线程中等待,直到在我的应用程序中生成一些数据。在当前情况下,由于线程忙于等待来自客户端的数据,因此线程会一直处于停滞状态,直到从客户端收到一些新数据。我不想强迫我的客户定期发送一些数据,以获取我的应用程序中生成的任何新数据。我想在生成数据后立即发送数据。

Object.wait/notify;倒计时锁存器;ReentrantLock不认为它在等待数据,而是认为它在等待,然后在有数据时收到通知。您等待一个公共锁对象,提供锁对象上的notifyAll()数据调用的线程和所有等待它的线程将被唤醒。感谢程序员和波希米亚人提供的信息。我很好奇是否可以同时等待来自数据生成线程的任何数据以及来自客户端的任何数据?这样我可以在生成数据后立即发送生成的任何数据,并在客户请求时立即回复客户的任何特殊请求?