package Ġtool . xf y 9 3 2 6 . schedule . tools Ċ Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ class ĠDis posable Value < T >( initial Value : ĠT ? Ġ= Ġnull , Ġprivate Ġval Ġsync : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġvalue Ġ= ĠWeak Reference ( initial Value ) ĊĊĠĠĠ Ġfun Ġwrite ( value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sync ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= ĠWeak Reference ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= ĠWeak Reference ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġread (): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sync ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinternal Read () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinternal Read () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinternal Read (): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= Ġthis . value . get () ĊĠĠĠĠĠĠĠ Ġthis . value . clear () ĊĠĠĠĠĠĠĠ Ġreturn Ġtemp ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconsume () Ġ{ ĊĠĠĠĠĠĠĠ Ġread () ĊĠĠĠ Ġ} Ċ }