Consider the following:
- Thread1: introduces a method
- Thread2: introduces a method
- Thread1: introduces a synchronization block, the token is not null and has not expired.
- Thread1: Exit Sync Block
- Thread2: enters the synchronization block, the token is not zero, but expired.
- Thread2: Assigns a New Token
- Thread1: ( , 2, )
- Thread2:
- Thread2: ()
, , token ( !), token .
, . ( ) token (, null), , , token ( ), null .