def init(self, initial):
if initial <= <NUM_LIT:0>:<EOL><INDENT>return False<EOL><DEDENT>step = initial // BLOCK_SIZE<EOL>with self._lock:<EOL><INDENT>init = self._atomic_long.compare_and_set(<NUM_LIT:0>, step + <NUM_LIT:1>).result()<EOL>if init:<EOL><INDENT>self._local = step<EOL>self._residue = (initial % BLOCK_SIZE) + <NUM_LIT:1><EOL><DEDENT>return init<EOL><DEDENT>
Try to initialize this IdGenerator instance with the given id. The first generated id will be 1 greater than id.

:param initial: (long), the given id.
:return: (bool), ``true`` if initialization succeeded, ``false`` if id is less than 0.