我有一个顶点,它有一个处理程序,可以在事件循环线程中调用Vertx的Web客户端。实际的底层API调用是同步的还是异步的?它会阻塞我的事件循环线程吗?假设我的API调用需要30秒才能返回。
public class MyHandler implements Handler<Message<JsonObject>> {
WebClient myClient;
public MyHandler(WebClient myClient) { this.myClient = myClient; }
@Override
public void handle(Message<JsonObject> message) {
myClient
.get("url.com/the/path")
.send().onSuccess(result -> { message.reply(result.bodyAsJson()); }
}
}
我是否需要用Vertx.execute阻塞(p-
所有执行I/O或者可能长期运行的Vert.x APIs都是异步的。以便< code>send调用将立即返回,一旦收到响应,Vert.x将安排您传递给< code>onSuccess的回调。在请求挂起的30秒内,其他代码将能够在同一线程中执行。
如Vert.x文档中所述:
除了极少数例外(即某些以“同步”结尾的文件系统操作),Vert.x 中没有一个 API 会阻止调用线程。
如果可以立即提供结果,则会立即返回结果,否则通常会提供一个处理程序以稍后接收事件。
由于没有任何 Vert.x API 会阻塞线程,这意味着您可以使用 Vert.x 仅使用少量线程来处理大量并发。
问题内容: 我正在尝试在Go中创建服务器和客户端,我已经设法与服务器和客户端进行通信。但是我的问题是,在golang中读取的TCP是非阻塞的。我想知道的是,golang中的读取是否有可能像C中的读取一样被阻塞。谢谢 编辑: 这是服务器的源代码: 和我的客户: 问题答案: 可以返回部分数据。从该文档,“如果某些数据是可用的,但不是LEN(P)个字节,读取常规返回什么是可用的,而不是等待更多。” 无论
非阻塞 IO 仅对在 Servlet 和 Filter(2.3.3.3节定义的,“异步处理”)中的异步请求处理和升级处理(2.3.3.5节定义的,“升级处理”)有效。否则,当调用 ServletInputStream.setReadListener 或ServletOutputStream.setWriteListener 方法时将抛出IllegalStateException。为了支持在 Ser
Web 容器中的非阻塞请求处理有助于提高对改善 Web 容器可扩展性不断增加的需求,增加 Web 容器可同时处理请求的连接数量。servlet 容器的非阻塞 IO 允许开发人员在数据可用时读取数据或在数据可写时写数据。非阻塞 IO 仅对在 Servlet 和 Filter(2.3.3.3节定义的,“异步处理”)中的异步请求处理和升级处理(2.3.3.5节定义的,“升级处理”)有效。否则,当调用 S
问题内容: 在我用Java开发的应用程序中,我正在使用ImageIO API缩放图像,然后将它们写入目录,然后通知Web服务器准备使用图像。将信号发送到Web服务器之前的最后一个调用是ImageIO.write()方法,但是此时Web服务器无法找到生成的图像。(稍后几毫秒,Web服务器便可以看到它们。) 我怀疑ImageIO.write()正在异步运行。我已经搜索了很多,但是找不到ImageIO.
ReplyingKafkaTemplate是否阻塞?有无反应性替代方案?
问题内容: 我有这段代码可以在Linux中从Serial读取,但是我不知道在读取SerialPort时阻塞和非阻塞之间有什么区别,在哪种情况下哪个更好? 问题答案: 您提到的代码是IMO编码和注释不当的代码。该代码不符合POSIX的可移植性惯例,如正确设置终端模式和POSIX操作系统的串行编程指南中所述。该代码没有提到它使用非规范(也称为原始)模式,并且重用了“阻塞”和“非阻塞”术语来描述 VMI