Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 Web套接字和非阻塞模式_Java - Fatal编程技术网

Java Web套接字和非阻塞模式

Java Web套接字和非阻塞模式,java,Java,如果我们将套接字通道configureBlocking设置为false,那么连接会自动变为双工模式吗?我想说的是,在这种情况下,服务器可以将数据异步推送到客户端浏览器吗?是否需要手动编程此行为?ServerSocketChannel和SocketChannel configureBlocking方法继承自AbstractSelectableChannel类。configureBlocking方法返回SelectableChannel对象 以下是有关SelectableChannel对象的文档片段

如果我们将套接字通道configureBlocking设置为false,那么连接会自动变为双工模式吗?我想说的是,在这种情况下,服务器可以将数据异步推送到客户端浏览器吗?是否需要手动编程此行为?

ServerSocketChannel和SocketChannel configureBlocking方法继承自AbstractSelectableChannel类。configureBlocking方法返回SelectableChannel对象

以下是有关SelectableChannel对象的文档片段:

阻塞模式

可选通道处于阻塞模式或非阻塞模式。在阻塞模式下,在通道上调用的每个I/O操作都将阻塞,直到完成为止。在非阻塞模式下,I/O操作将永远不会阻塞,并且可能传输的字节数少于请求的字节数,或者可能根本没有字节。可选择信道的阻塞模式可通过调用其isBlocking方法来确定

新创建的可选通道始终处于阻塞模式。非阻塞模式与基于选择器的多路复用结合使用最为有用。在向选择器注册之前,通道必须置于非阻塞模式,并且在取消注册之前不得返回到阻塞模式

新创建的可选通道始终处于阻塞模式,因此如果您想要非阻塞双工模式,则必须显式调用configureBlocking(false)

以下是您可能会觉得有用的Javadoc列表:


)

简言之,必须编辑程序才能使用可选选项。这并不像拨动开关那么简单。