首页 > 编程知识 正文

java阻塞方法,java异步结果不阻塞

时间:2023-05-06 15:56:00 阅读:174248 作者:25

“同步”和“异步”,“块”和“非块”是我们经常听到的概念,它们从不同的维度描述一件事,往往容易混淆。

1 .同步和异步

同步和异步说明消息通信的机制。

同步

发送请求后,会得到响应。 整个过程就是同步调用的过程。 无论response为空还是响应返回非常快,此次请求都是同步调用。

异步

发送一个request后,无法获得所需的响应,而是通过以后的callback、状态或通知来获得结果。 可以理解,对于异步请求分为两个阶段。

1 )即使调用方发送request,也不会返回相应的响应(可能为空响应);

2 )服务器在response处理完成后,通过callback通知调用方。

对1 )来说是同步操作(呼叫方要求服务器端),对2 )来说也是同步操作)服务器端返回呼叫方。 从要求的目的(呼叫方想发送request,获得对应的response )来看,这两个步骤即使被分割也没有意义,需要结合起来看,整个过程都是异步要求。 异步请求具有最典型的特征。 要向调用者通知结果,需要callback、状态或通知方法。

2 .阻滞与不阻滞

阻塞和无阻塞描述等待调用结果(消息、返回值)时程序的状态。

方块

阻塞调用是指调用方发出request的线程由于某种原因挂起到服务器端,当服务器获取response时,将挂起的线程调用到调用方并返回response。

无阻塞

未阻塞的调用是指调用方发出request的线程在没有等待结果的情况下挂起,并且在得到响应之前不会返回。

阻塞和非阻塞的最大区别在于查看调用线程是否挂起。

3 .同步、异步、阻塞、非阻塞IO

同步块IO

对于Sender,在提交请求后,在Receiver产生结果之前,同步是返回的。 在Sender得到结果的时候一直住在block。 也就是说,在此期间Sender无法处理其他事情。 这是方块。

异步块IO

对于Sender,在请求提交后,立即返回,等待receiver callback,最后再次请求获取response的过程是异步的。 Sender在等receiver callback的时候一直住在block。 也就是说,在此期间Sender无法处理其他事情。 这是方块。

异步无阻塞IO

对于Sender,您必须在提交请求后立即返回,然后在Receiver处理结果后,最后将请求发送到Receiver以获取响应。 Sender始终积极轮询,所有请求都已同步,整个过程也已同步。 当Sender等待接收响应时,它可以处理其他事情。 例如,可以发送请求的查询结果。 这是无阻塞的。

异步无阻塞IO

对于Sender,在请求提交后,立即返回,等待receiver callback,最后再次请求获取response的过程是异步的。 在Sender等待receiver callback的过程中,唯一能处理其他事情的就是无阻塞。

总结

同步和异步检查调用者是否需要通过callback、通知或状态获取结果

阻塞和非阻塞会检查调用者在发送请求后是否阻塞

以上是JAVA同步、异步、块和非块之间差异的详细说明。 请注意其他相关文章,以了解JAVA同步、异步以及块和非块之间的区别。

时间: 2020-07-31

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。