网站首页 综合 > 正文
大家好,小豆豆来为大家解答以上的问题。异步调用时使用了唯一性限制咋弄,异步调用这个很多人还不知道,现在让我们一起来看看吧!
1、asynchronous call(异步调用)一个可以无需等待被调用函数的返回值就让操作继续进行的方法中文名异步调用外文名asynchronous call领域函数杰作线程。
2、快速导航实战用法异步调用使用方法举例异步调用就是你 喊 你朋友吃饭 ,你朋友说知道了 ,待会忙完去找你 ,你就去做别的了。
3、同步调用就是你 喊 你朋友吃饭 ,你朋友在忙 ,你就一直在那等,等你朋友忙完了 ,你们一起去。
4、实战用法操作系统发展到今天已经十分精巧,线程就是其中一个杰作。
5、操作系统把 CPU 处理时间划分成许多短暂时间片,在时间 T1 执行一个线程的指令,到时间 T2又执行下一线程的指令,各线程轮流执行,结果好象是所有线程在并肩前进。
6、这样,编程时可以创建多个线程,在同一期间执行,各线程可以“并行”完成不同的任务。
7、在单线程方式下,计算机是一台严格意义上的冯·诺依曼式机器,一段代码调用另一段代码时,只能采用同步调用,必须等待这段代码执行完返回结果后,调用方才能继续往下执行。
8、有了多线程的支持,可以采用异步调用,调用方和被调方可以属于两个不同的线程,调用方启动被调方线程后,不等对方返回结果就继续执行后续代码。
9、被调方执行完毕后,通过某种手段通知调用方:结果已经出来,请酌情处理。
10、1. 使用wait和notify方法这个方法其实是利用了锁机制,直接贴代码:public class Demo1 extends BaseDemo{ private final Object lock = new Object(); @Override public void callback(long response) { System.out.println("得到结果"); System.out.println(response); System.out.println("调用结束"); synchronized (lock) { lock.notifyAll(); } } public static void main(String[] args) { Demo1 demo1 = new Demo1(); demo1.call(); synchronized (demo1.lock){ try { demo1.lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("主线程内容"); } }可以看到在发起调用后,主线程利用wait进行阻塞,等待回调中调用notify或者notifyAll方法来进行唤醒。
11、注意,和大家认知的一样,这里wait和notify都是需要先获得对象的锁的。
12、在主线程中最后我们打印了一个内容,这也是用来验证实验结果的,如果没有wait和notify,主线程内容会紧随调用内容立刻打印;而像我们上面的代码,主线程内容会一直等待回调函数调用结束才会进行打印。
13、没有使用同步操作的情况下,打印结果:发起调用 调用返回 主线程内容 得到结果 1 调用结束而使用了同步操作后:发起调用 调用返回 得到结果 9 调用结束 主线程内容2. 使用条件锁和方法一的原理类似:public class Demo2 extends BaseDemo { private final Lock lock = new ReentrantLock(); private final Condition con = lock.newCondition(); @Override public void callback(long response) { System.out.println("得到结果"); System.out.println(response); System.out.println("调用结束"); lock.lock(); try { con.signal(); }finally { lock.unlock(); } } public static void main(String[] args) { Demo2 demo2 = new Demo2(); demo2.call(); demo2.lock.lock(); try { demo2.con.await(); } catch (InterruptedException e) { e.printStackTrace(); }finally { demo2.lock.unlock(); } System.out.println("主线程内容"); } }基本上和方法一没什么区别,只是这里使用了条件锁,两者的锁机制有所不同。
本文到此分享完毕,希望对大家有所帮助。
版权说明: 本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
猜你喜欢:
- 2022-08-21 唯物辩证法的发展观是什么(唯物辩证法的发展观简述)
- 2022-08-10 活着就是恶心结局(活着就是恶心的结局是什么)
- 2022-08-20 电脑自动跳出网页怎么解决(如何解决电脑自动跳出网页)
- 2022-10-02 刘田利还在吗(刘田利)
- 2022-08-30 什么是锅炉吹管系数(锅炉吹管系数简述)
- 2022-07-26 精卫填海的精卫指什么(精卫填海中的精卫是指什么)
- 2022-10-12 熔火之心的传送门任务接不了(熔火之心的传送门任务)
- 2022-11-28 双响炮分集介绍(双响炮剧情)
最新文章:
- 2022-12-15 12月15日黑龙江大庆疫情最新情况及大庆疫情最新状况确诊人数
- 2022-12-15 家庭药箱进万家(关于家庭药箱进万家介绍)
- 2022-12-15 12月15日辽宁大连疫情今日数据及大连疫情最新消息今天新增病例
- 2022-12-15 孩子极度厌学怎么办(孩子不爱学习怎么办)
- 2022-12-15 12月15日云南大理疫情最新通报详情及大理疫情防控通告今日数据
- 2022-12-15 12月15日云南楚雄疫情最新通报详情及楚雄目前疫情最新通告
- 2022-12-15 百新文具官方网站地址(百新网)
- 热点推荐
- 热评文章