package Ġcom . under wood . id generator Ċ Ċ import Ġjava . util . concurrent . Executors Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjava . util . concurrent . atomic . Atomic Long Ċ Ċ class ĠSystem Clock ( private Ġval Ġperiod : ĠLong ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠSystem Clock ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠAtomic Long ( System . currentTimeMillis ()) ĊĊĠĠĠĠĠĠĠ Ġfun Ġnow (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSystem Clock . now . get () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġschedule Clock Updating () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġschedule Clock Updating () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscheduler Ġ= ĠExec utors . new Single Thread Scheduled Executor Ġ{ ĠThread ( it , Ġ" System ĠClock ") Ġ} ĊĠĠĠĠĠĠĠ Ġscheduler . schedule At Fixed Rate ({ Ġnow . set ( System . currentTimeMillis ()) Ġ}, Ġperiod , Ġperiod , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠ Ġ} Ċ }