钩子函数执行顺序
钩子函数执行顺序是什么样子,我有几个疑问
1 第一个图是老师主方法,在执行pause的时候标志位是否暂停赋值true,此时什么时机执行的钩子函数
2 暂停之后是否暂停标志位为true,此时钩子函数开始执行,同时钩子函数的while(true)进入死循环,那么为什么后面的恢复还能继续执行
3 为什么钩子函数 暂停 恢复这几个方法都执行lock.lock()锁一下
源自:线程池
3-12 暂停和恢复线程池
7
收起
正在回答
1回答
同学你好~
1.钩子函数的执行时机与其他任何方法的调用都没有关系,仅在每个任务提交给线程池时才会调用。
2.钩子函数中并不是死循环,当进入循环后,会执行await方法使当前线程进入等待队列并释放其携带的锁,然后执行finally将lock锁释放。而当resume方法将这个在等待队列中的任务重新激活时,会再次执行钩子函数(注意,是再次执行,而不是继续执行),此时不会进入循环,即可正常运行。
3.使用lock的原因是,多个线程之间都在操作同一个标志位对象,多线程下会有线程安全问题。
祝学习愉快
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星