All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pro.jk.ejoker.common.system.wrapper.LockWrapper Maven / Gradle / Ivy

There is a newer version: 3.0.7.1
Show newest version
package pro.jk.ejoker.common.system.wrapper;

import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

import pro.jk.ejoker.common.system.functional.IFunction;
import pro.jk.ejoker.common.system.wrapper.WrapperAssembler.LockProviderContext;

public final class LockWrapper {

	public static Lock createLock() {
		return lockCreator.trigger();
	}

	private final static AtomicBoolean hasRedefined = new AtomicBoolean(false);
	
	private static IFunction lockCreator = null;
	
	static {
		lockCreator = ReentrantLock::new;
		
		WrapperAssembler.setLockProviderContext(new LockProviderContext() {
			@Override
			public boolean tryMarkHasBeenSet() {
				return !hasRedefined.compareAndSet(false, true);
			}
			@Override
			public void apply2lockCreator(IFunction lockCreator) {
				LockWrapper.lockCreator = lockCreator;
			}
		});
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy