Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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_Multithreading_Sockets_Concurrency_Java.util.concurrent - Fatal编程技术网

Java 同时等待多件事情中的第一件

Java 同时等待多件事情中的第一件,java,multithreading,sockets,concurrency,java.util.concurrent,Java,Multithreading,Sockets,Concurrency,Java.util.concurrent,如果我想同时 写入将启动长时间运行的远程任务并侦听最终响应的套接字 定期在所述插座上进行高级心跳(与保持活力相比) 例如,定期发送“ping”并期望在某个时间间隔内发出“pong”,否则关闭套接字 倾听按钮的咔嗒声 这些操作可能会取消套接字上的当前操作,这需要让远程服务器知道 从另一个角度来看,如果您熟悉socket select,我正在寻找类似的东西,但我可以用来等待socket或GUI;以先返回者为准 我觉得也许我要找的只是某种形式的排队,但我想知道是否有更合适的方式 我应该使用

如果我想同时

  • 写入将启动长时间运行的远程任务并侦听最终响应的套接字
  • 定期在所述插座上进行高级心跳(与保持活力相比)
    • 例如,定期发送“ping”并期望在某个时间间隔内发出“pong”,否则关闭套接字
  • 倾听按钮的咔嗒声
    • 这些操作可能会取消套接字上的当前操作,这需要让远程服务器知道
从另一个角度来看,如果您熟悉socket select,我正在寻找类似的东西,但我可以用来等待socket或GUI;以先返回者为准

我觉得也许我要找的只是某种形式的排队,但我想知道是否有更合适的方式


我应该使用什么来尝试在不轮询的情况下从多个线程中的第一个线程中获取结果?

选择器类,也许吧?虽然
选择器
类有
选择
,但我不认为这是我想要的,因为我想要选择的东西必须是
可选择频道
的子类,它们不是。您确定不只是要设置读取超时吗?套接字上的多路复用必然会导致一些难看的代码,特别是如果您不使用
NIO/Selector
路径,那么就更是如此。我认为套接字响应不会那么难处理。解析JSON,获取响应类型键,并基于该键调用一个方法。我的问题主要是关于在没有轮询的情况下等待GUI的单击或套接字的响应。我感觉越来越像一个
阻塞队列
是我所寻找的。