/* Ċ Ġ* Ġ Ġ< h 1 > License Ġ:</ h 1 > Ġ< br /> Ċ Ġ* ĠThe Ġfollowing Ġcode Ġis Ġdeliver Ġas Ġis . Ġ< br /> Ċ Ġ* Ġ ĠYou Ġcan Ġuse , Ġmodify , Ġthe Ġcode Ġas Ġyour Ġneed Ġfor Ġany Ġusage .< br /> Ċ Ġ* Ġ ĠBut Ġyou Ġcan 't Ġdo Ġany Ġaction Ġthat Ġavoid Ġme Ġor Ġother Ġperson Ġuse , Ġmodify Ġthis Ġcode .< br /> Ċ Ġ* Ġ ĠThe Ġcode Ġis Ġfree Ġfor Ġusage Ġand Ġmodification , Ġyou Ġcan 't Ġchange Ġthat Ġfact . Ċ Ġ*/ Ċ Ċ package Ġfr . j help . utilities Ċ Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ Ċ class ĠWaiting Lock Ċ { ĊĠĠĠ Ġprivate Ġval Ġlock Ġ= ĠObject () ĊĠĠĠ Ġprivate Ġval Ġwaiting Ġ= ĠAtomic Boolean ( false ) ĊĠĠĠ Ġprivate Ġval Ġfreed Ġ= ĠAtomic Boolean ( false ) ĊĊĠĠĠ Ġfun Ġlock () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this . lock ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! this . fre ed . get AndSet ( false )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . waiting . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . lock . wait () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . waiting . set ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunlock () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this . lock ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . waiting . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . lock . notify All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fre ed . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }