public class

MicrosecondsAsyncClock

extends Object
implements Clock
package com.netflix.astyanax.clock;

import java.util.concurrent.atomic.AtomicInteger;

import com.netflix.astyanax.Clock;

public class MicrosecondsAsyncClock implements Clock {

    private static final long serialVersionUID = -4671061000963496156L;
    private static final long ONE_THOUSAND = 1000L;

    private static AtomicInteger counter = new AtomicInteger(0);

    public MicrosecondsAsyncClock() {

    }

    @Override
    public long getCurrentTime() {
        // The following simulates a microseconds resolution by advancing a
        // static counter
        // every time a client calls the createClock method, simulating a tick.
        long us = System.currentTimeMillis() * ONE_THOUSAND;
        return us + counter.getAndIncrement() % ONE_THOUSAND;
    }

    public String toString() {
        return "MicrosecondsAsyncClock";
    }
}