钩子函数执行顺序

钩子函数执行顺序

641115980001fb0406400288.jpg641115a20001552206400288.jpg
钩子函数执行顺序是什么样子,我有几个疑问
1 第一个图是老师主方法,在执行pause的时候标志位是否暂停赋值true,此时什么时机执行的钩子函数
2 暂停之后是否暂停标志位为true,此时钩子函数开始执行,同时钩子函数的while(true)进入死循环,那么为什么后面的恢复还能继续执行
3 为什么钩子函数 暂停 恢复这几个方法都执行lock.lock()锁一下

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好~

1.钩子函数的执行时机与其他任何方法的调用都没有关系,仅在每个任务提交给线程池时才会调用。

2.钩子函数中并不是死循环,当进入循环后,会执行await方法使当前线程进入等待队列并释放其携带的锁,然后执行finally将lock锁释放。而当resume方法将这个在等待队列中的任务重新激活时,会再次执行钩子函数(注意,是再次执行,而不是继续执行),此时不会进入循环,即可正常运行。

3.使用lock的原因是,多个线程之间都在操作同一个标志位对象,多线程下会有线程安全问题。

祝学习愉快

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师