我读到拥有监视器的线程如果需要,可以重新进入同一个监视器,如何实现。任何帮助将不胜感激。
答案 0 :(得分:4)
以下功能取得监视器的所有权:
function_a() {
synchronized(monitor) {
function_b();
}
}
现在让我们说function_b
看起来像这样:
function_b() {
synchronized(monitor) {
do_something();
}
}
在function_b
中,我们的线程通过在其上声明第二次同步来“重新进入”监视器。由于线程已拥有监视器,因此线程可以继续进入第二个同步块。