違いは、通知とのnotifyAll、ロックプールプールのを待ちます

ロックプールとプール待ち

JVMで実行中のプログラムの各オブジェクトは、二つのプールを有する場合:プールするentrylistをロック三のプールWaitSet、二つのプール順番にオブジェクトクラス待機()、通知()、のnotifyAll()メソッドを待っそして、synchronizedキーワードについて。

  • 锁池するentrylist

    B、Cのスレッドを対象にする方法を同期するので、Aは、他のスレッドBが、Cがこのオブジェクト(またはブロック)の同期メソッドを呼び出したい、ロックの特定のオブジェクト(ないクラス)を想定したスレッド(またはオブジェクトをロックするために起こるオブジェクトロックの)所有権は、現在Bは、Cのスレッドがロックを解除するために待機する場所にブロックされている間、この場所で、スレッドAによって占有されているブロックの前に得られなければなりませんオブジェクトのロックプール

  • 待機プールWaitSet

    スレッドは待機をスレッドAがオブジェクトの待機プールに入りながら、オブジェクト()メソッドは、スレッドAがオブジェクトのロックを解除すると、待機プールオブジェクトにスレッドが競合することはないと仮定されるコールロック。

違いは、通知とのnotifyAll

ロックを取得するために、プールの競争にロックプールに入るのを待っているスレッドでランダムに選択された機会のみを通知

作る機会のnotifyAll待機プール内のすべてのスレッドがロックを獲得するために競争するためにプールにロックされています

公開された42元の記事 ウォン称賛11 ビュー3809

おすすめ

転載: blog.csdn.net/weixin_44584387/article/details/104702018