package im.actor.runtime.generic; import im.actor.runtime.generic.threading.GenericAtomicInteger; import im.actor.runtime.generic.threading.GenericAtomicLong; import im.actor.runtime.generic.threading.GenericImmediateDispatcher; import im.actor.runtime.generic.threading.GenericThreadLocal; import im.actor.runtime.ThreadingRuntime; import im.actor.runtime.actors.ThreadPriority; import im.actor.runtime.generic.threading.GenericWeakReference; import im.actor.runtime.threading.AtomicIntegerCompat; import im.actor.runtime.threading.AtomicLongCompat; import im.actor.runtime.threading.ImmediateDispatcher; import im.actor.runtime.threading.ThreadLocalCompat; import im.actor.runtime.threading.WeakReferenceCompat; public abstract class GenericThreadingProvider implements ThreadingRuntime { public GenericThreadingProvider() { } @Override public long getActorTime() { return System.nanoTime() / 1000000; } @Override public long getCurrentTime() { return System.currentTimeMillis(); } @Override public long getSyncedCurrentTime() { return getCurrentTime(); } @Override public int getCoresCount() { return Runtime.getRuntime().availableProcessors(); } @Override public AtomicIntegerCompat createAtomicInt(int value) { return new GenericAtomicInteger(value); } @Override public <T> WeakReferenceCompat<T> createWeakReference(T val) { return new GenericWeakReference<>(val); } @Override public AtomicLongCompat createAtomicLong(long value) { return new GenericAtomicLong(value); } @Override public <T> ThreadLocalCompat<T> createThreadLocal() { return new GenericThreadLocal<>(); } @Override public ImmediateDispatcher createImmediateDispatcher(String name, ThreadPriority priority) { return new GenericImmediateDispatcher(name, priority); } }