首页 > 编程知识 正文

java异步等待另一个异步结果,java异步结果不阻塞

时间:2023-05-05 23:34:13 阅读:174258 作者:3079

摘录: https://www.cn blogs.com/Cao Tao 0918/p/10699785.html

在多线程环境中,经常会出现数据共享问题。 这意味着,如果多个线程需要访问同一资源,则必须按某种顺序确保它们在某个时刻只有一个线程可以使用资源。 否则,程序的执行结果会出乎意料。 在这种情况下,例如,如果多个线程需要同时写入相同数据,也就是说,如果线程a需要使用一个资源,而线程b正在使用该资源,则同步机制使线程a-- .等待,线程b在资源的因此,同步机制可以确保资源的安全性。

要执行同步操作,必须获取每个线程对象的锁定。 获得可以确保在同一时间只有一个线程进入关键节(访问互斥资源的代码块),在解除锁定之前,其他线程不能进入该关键节。 如果其他线程尝试获取该对象的锁定,则只能排队等待。 只有在具有对象锁的线程退出关键节时,才会释放锁,并等待队列中具有最高优先级的线程获得锁并共享代码区域。

Java语言在同步机制中提供了语言级支持,可以使用synchronized关键字实现同步。 但是,这种方法并不是“万金油”,而是以牺牲很大的开销为代价,I还可能导致死锁,所以同步控制并不是越多越好,必须避免不必要的同步控制。 有两种实现同步的方法:i。 一是利用同步码块实现同步。 --种子利用同步方法实现同步。

异步和无阻塞一样,每个线程都包含运行时自身所需的数据和方法,因此在进行输出失败处理时,无需在意其他线程的状态和行为,也无需在输出失败处理完成之前返回。 如果APP将需要很长时间才能执行的方法添加到对象中,并且不希望程序等待方法的返回,则必须使用异步编程。 异步可以提高程序的效率。

举一个生活中的简单例子,可以区分同步和异步。 同步是指你叫我去吃饭。 听到的话,我和你去吃饭; 如果我没听,你就不断地喊,直到我说我问你,我们才起床去吃饭。 异步是指你叫我,自己去吃饭。 我得到消息后可能马上走,或者在工作结束前不吃饭。

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