本文整理汇总了Java中io.vertx.core.shareddata.Lock类的典型用法代码示例。如果您正苦于以下问题:Java Lock类的具体用法?Java Lock怎么用?Java Lock使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
Lock类属于io.vertx.core.shareddata包,在下文中一共展示了Lock类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: getClusterRecord
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
/**
* Get the record corresponding to a given component identifier
*
* @param id Component identifier
* @param future Future to provide the record
* @see <a href="http://vertx.io/docs/apidocs/io/vertx/core/Future.html" target="_blank">Future</a>
*/
private void getClusterRecord(final String id, Future<JsonObject> future) {
sharedData.getLock(RECORDS_LOCK_NAME, lockRes -> {
if (lockRes.succeeded()) {
Lock asyncLock = lockRes.result();
clusterRecords.get(id, getRes -> {
if (getRes.succeeded()) {
String record = getRes.result();
future.complete(new JsonObject(record));
} else {
future.fail(getRes.cause());
}
});
asyncLock.release();
} else {
future.fail(lockRes.cause());
}
});
}
开发者ID:mustertech,项目名称:rms-deployer,代码行数:28,代码来源:DeployRecords.java
示例2: getLockWithTimeout
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
@Override
public void getLockWithTimeout(String name, long timeout, Handler<AsyncResult<Lock>> resultHandler) {
vertx.executeBlocking(future -> {
ZKLock lock = locks.get(name);
if (lock == null) {
InterProcessSemaphoreMutex mutexLock = new InterProcessSemaphoreMutex(curator, ZK_PATH_LOCKS + name);
lock = new ZKLock(mutexLock);
}
try {
if (lock.getLock().acquire(timeout, TimeUnit.MILLISECONDS)) {
locks.putIfAbsent(name, lock);
future.complete(lock);
} else {
future.fail(new VertxException("Timed out waiting to get lock " + name));
}
} catch (Exception e) {
future.fail(new VertxException("get lock exception", e));
}
}, resultHandler);
}
开发者ID:IBYoung,项目名称:vert.3x-gateway,代码行数:21,代码来源:ZookeeperClusterManager.java
示例3: getLockWithTimeout
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
@Override
public void getLockWithTimeout(String name, long timeout, Handler<AsyncResult<Lock>> resultHandler) {
ContextImpl context = (ContextImpl) vertx.getOrCreateContext();
// Ordered on the internal blocking executor
context.executeBlocking(() -> {
java.util.concurrent.locks.Lock lock = lockService.getLock(name);
try {
if (lock.tryLock(timeout, TimeUnit.MILLISECONDS)) {
return new JGroupsLock(vertx, lock);
} else {
throw new VertxException("Timed out waiting to get lock " + name);
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new VertxException(e);
}
}, resultHandler);
}
开发者ID:vert-x3,项目名称:vertx-infinispan,代码行数:19,代码来源:InfinispanClusterManager.java
示例4: executeDefaultState
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
private static <T> void executeDefaultState(
long _timeout,
ThrowableFutureConsumer<T> _userOperation,
VxmsShared vxmsShared,
Future<T> operationResult,
Lock lock) {
lock.release();
if (_timeout > DEFAULT_LONG_VALUE) {
addTimeoutHandler(
_timeout,
vxmsShared,
(l) -> {
if (!operationResult.isComplete()) {
operationResult.fail(new TimeoutException("operation timeout"));
}
});
}
executeAndCompleate(_userOperation, operationResult);
}
开发者ID:amoAHCP,项目名称:vxms,代码行数:20,代码来源:ResponseExecution.java
示例5: openCircuitBreakerAndHandleError
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
private static <T> void openCircuitBreakerAndHandleError(
Consumer<Throwable> errorHandler,
ThrowableErrorConsumer<Throwable, T> onFailureRespond,
Consumer<Throwable> errorMethodHandler,
Consumer<ExecutionResult<T>> resultConsumer,
AsyncResult<T> event,
Lock lock,
Counter counter) {
counter.addAndGet(
LOCK_VALUE,
val -> {
lock.release();
errorHandling(
errorHandler,
onFailureRespond,
errorMethodHandler,
resultConsumer,
Future.failedFuture(event.cause()));
});
}
开发者ID:amoAHCP,项目名称:vxms,代码行数:21,代码来源:ResponseExecution.java
示例6: executeDefaultState
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
private static <T, V> void executeDefaultState(
long _timeout,
ThrowableFutureBiConsumer<T, V> step,
T inputValue,
VxmsShared vxmsShared,
Future<V> operationResult,
Lock lock) {
lock.release();
if (_timeout > DEFAULT_LONG_VALUE) {
addTimeoutHandler(
_timeout,
vxmsShared,
(l) -> {
if (!operationResult.isComplete()) {
operationResult.fail(new TimeoutException("operation timeout"));
}
});
}
executeAndCompleate(step, inputValue, operationResult);
}
开发者ID:amoAHCP,项目名称:vxms,代码行数:21,代码来源:StepExecution.java
示例7: openCircuitBreakerAndHandleError
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
private static <T> void openCircuitBreakerAndHandleError(
Future<ExecutionResult<T>> _blockingHandler,
Consumer<Throwable> _errorHandler,
ThrowableFunction<Throwable, T> _onFailureRespond,
Consumer<Throwable> _errorMethodHandler,
VxmsShared vxmsShared,
Throwable e,
Lock lck,
Counter counter) {
counter.addAndGet(
LOCK_VALUE,
val -> {
lck.release();
final Vertx vertx = vxmsShared.getVertx();
vertx.executeBlocking(
bhandler -> {
T result = handleError(_errorHandler, _onFailureRespond, _errorMethodHandler, e);
if (!_blockingHandler.isComplete()) {
_blockingHandler.complete(new ExecutionResult<>(result, true, true, null));
}
},
false,
res -> {});
});
}
开发者ID:amoAHCP,项目名称:vxms,代码行数:26,代码来源:ResponseBlockingExecution.java
示例8: openCircuitBreakerAndHandleError
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
private static <T> void openCircuitBreakerAndHandleError(
Future<ExecutionResult<T>> _resultHandler,
Consumer<Throwable> _errorHandler,
ThrowableFunction<Throwable, T> _onFailureRespond,
Consumer<Throwable> _errorMethodHandler,
VxmsShared vxmsShared,
Throwable e,
Lock lck,
Counter counter) {
counter.addAndGet(
LOCK_VALUE,
val -> {
lck.release();
final Vertx vertx = vxmsShared.getVertx();
vertx.executeBlocking(
bhandler -> {
T result = handleError(_errorHandler, _onFailureRespond, _errorMethodHandler, e);
if (!_resultHandler.isComplete()) {
_resultHandler.complete(new ExecutionResult<>(result, true, true, null));
}
},
false,
res -> {});
});
}
开发者ID:amoAHCP,项目名称:vxms,代码行数:26,代码来源:StepExecution.java
示例9: executeDefaultState
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
private static <T> void executeDefaultState(
long _timeout,
ThrowableFutureConsumer<T> _userOperation,
VxmsShared vxmsShared,
Future<T> operationResult,
Lock lock) {
lock.release();
if (_timeout > DEFAULT_LONG_VALUE) {
addTimeoutHandler(
_timeout,
vxmsShared.getVertx(),
(l) -> {
if (!operationResult.isComplete()) {
operationResult.fail(new TimeoutException("operation timeout"));
}
});
}
executeAndCompleate(_userOperation, operationResult);
}
开发者ID:amoAHCP,项目名称:vxms,代码行数:20,代码来源:ResponseExecution.java
示例10: executeDefaultState
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
private static <T, V> void executeDefaultState(
long _timeout,
ThrowableFutureBiConsumer<T, V> _step,
T _inputValue,
VxmsShared vxmsShared,
Future<V> operationResult,
Lock lock) {
lock.release();
if (_timeout > DEFAULT_LONG_VALUE) {
addTimeoutHandler(
_timeout,
vxmsShared.getVertx(),
(l) -> {
if (!operationResult.isComplete()) {
operationResult.fail(new TimeoutException("operation timeout"));
}
});
}
executeAndCompleate(_step, _inputValue, operationResult);
}
开发者ID:amoAHCP,项目名称:vxms,代码行数:21,代码来源:StepExecution.java
示例11: getLockWithTimeout
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
@Override
public void getLockWithTimeout(String name, long timeout, Handler<AsyncResult<Lock>> handler) {
Context context = vertx.getOrCreateContext();
lockCache.getUnchecked(name).whenComplete((lock, error) -> {
if (error == null) {
lock.async().tryLock(Duration.ofMillis(timeout)).whenComplete((lockResult, lockError) -> {
if (lockError == null) {
if (lockResult.isPresent()) {
context.runOnContext(v -> Future.<Lock>succeededFuture(new AtomixLock(vertx, lock)).setHandler(handler));
} else {
context.runOnContext(v -> Future.<Lock>failedFuture(new VertxException("Timed out waiting to get lock " + name)).setHandler(handler));
}
} else {
context.runOnContext(v -> Future.<Lock>failedFuture(lockError).setHandler(handler));
}
});
} else {
context.runOnContext(v -> Future.<Lock>failedFuture(error).setHandler(handler));
}
});
}
开发者ID:atomix,项目名称:atomix-vertx,代码行数:22,代码来源:AtomixClusterManager.java
示例12: getLockWithTimeout
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
@Override
public void getLockWithTimeout(String name, long timeout, Handler<AsyncResult<Lock>> resultHandler) {
ContextImpl context = (ContextImpl) vertx.getOrCreateContext();
// Ordered on the internal blocking executor
context.executeBlocking(() -> {
ISemaphore iSemaphore = hazelcast.getSemaphore(LOCK_SEMAPHORE_PREFIX + name);
boolean locked = false;
long remaining = timeout;
do {
long start = System.nanoTime();
try {
locked = iSemaphore.tryAcquire(remaining, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
// OK continue
}
remaining = remaining - MILLISECONDS.convert(System.nanoTime() - start, NANOSECONDS);
} while (!locked && remaining > 0);
if (locked) {
return new HazelcastLock(iSemaphore);
} else {
throw new VertxException("Timed out waiting to get lock " + name);
}
}, resultHandler);
}
开发者ID:vert-x3,项目名称:vertx-hazelcast,代码行数:25,代码来源:HazelcastClusterManager.java
示例13: getLockWithTimeout
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
@Override
public void getLockWithTimeout(final String name, final long timeout, final Handler<AsyncResult<Lock>> resultHandler) {
AsynchronousLock lock = new AsynchronousLock(this.vertx);
final AsynchronousLock prev = locks.putIfAbsent(name, lock);
if (prev != null) {
lock = prev;
}
final FakeLock flock = new FakeLock(lock);
flock.acquire(timeout, resultHandler);
}
开发者ID:silentbalanceyh,项目名称:vertx-zero,代码行数:11,代码来源:FakeClusterManager.java
示例14: count
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
/**
* Get the count of currently deployed components
*
* @param future Future to provide the count of deployed components
* @see <a href="http://vertx.io/docs/apidocs/io/vertx/core/Future.html" target="_blank">Future</a>
*/
void count(Future<Integer> future) {
if (!isInitialized()) {
future.fail("DeployRecords should be initialized before using it!");
return;
}
if (null == localRecords) {
sharedData.getLock(RECORDS_LOCK_NAME, lockRes -> {
if (lockRes.succeeded()) {
Lock asyncLock = lockRes.result();
clusterRecords.size(sizeRes -> {
if (sizeRes.succeeded()) {
future.complete(sizeRes.result());
} else {
future.fail(sizeRes.cause());
}
asyncLock.release();
});
} else {
future.fail(lockRes.cause());
}
});
return;
}
future.complete(Integer.valueOf(localRecords.size()));
}
开发者ID:mustertech,项目名称:rms-deployer,代码行数:37,代码来源:DeployRecords.java
示例15: init
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
/**
* Method to initialize the object so that it can handle deployment and undeployment of components
*
* @param isClustered Whether cluster mode is opted
* @param future Future to provide the status of initialization
* @see <a href="http://vertx.io/docs/apidocs/io/vertx/core/Future.html" target="_blank">Future</a>
*/
void init(Boolean isClustered, Future<Boolean> future) {
if (isInitialized()) {
future.complete(false);
return;
}
if (isClustered) {
sharedData.getLock(RECORDS_LOCK_NAME, lockRes -> {
if (lockRes.succeeded()) {
Lock asyncLock = lockRes.result();
sharedData.<String, String>getClusterWideMap(RECORDS_MAP_NAME, mapRes -> {
if (mapRes.succeeded()) {
clusterRecords = mapRes.result();
future.complete(true);
} else {
future.fail(mapRes.cause());
}
asyncLock.release();
});
} else {
future.fail(lockRes.cause());
}
});
return;
}
localRecords = sharedData.getLocalMap(RECORDS_MAP_NAME);
future.complete(true);
}
开发者ID:mustertech,项目名称:rms-deployer,代码行数:40,代码来源:DeployRecords.java
示例16: getLockWithTimeout
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
@Override
public void getLockWithTimeout(String name, long timeout, Handler<AsyncResult<Lock>> handler) {
ContextImpl context = (ContextImpl) vertx.getOrCreateContext();
// Ordered on the internal blocking executor
context.executeBlocking(() -> {
boolean locked;
try {
IgniteQueue<String> queue = getQueue(name, true);
pendingLocks.offer(name);
locked = queue.offer(getNodeID(), timeout, TimeUnit.MILLISECONDS);
if (!locked) {
// EVT_NODE_LEFT/EVT_NODE_FAILED event might be already handled, so trying get lock again if
// node left topology.
// Use IgniteSempahore when it will be fixed.
String ownerId = queue.peek();
ClusterNode ownerNode = ignite.cluster().forNodeId(UUID.fromString(ownerId)).node();
if (ownerNode == null) {
queue.remove(ownerId);
locked = queue.offer(getNodeID(), timeout, TimeUnit.MILLISECONDS);
}
}
} catch (Exception e) {
throw new VertxException("Error during getting lock " + name, e);
} finally {
pendingLocks.remove(name);
}
if (locked) {
return new LockImpl(name);
} else {
throw new VertxException("Timed out waiting to get lock " + name);
}
}, handler);
}
开发者ID:vert-x3,项目名称:vertx-ignite,代码行数:39,代码来源:IgniteClusterManager.java
示例17: releaseLockAndHandleError
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
private static <T> void releaseLockAndHandleError(
Consumer<Throwable> errorHandler,
ThrowableErrorConsumer<Throwable, T> onFailureRespond,
Consumer<Throwable> errorMethodHandler,
Consumer<ExecutionResult<T>> resultConsumer,
Lock lock,
Throwable cause) {
Optional.ofNullable(lock).ifPresent(Lock::release);
errorHandling(
errorHandler,
onFailureRespond,
errorMethodHandler,
resultConsumer,
Future.failedFuture(cause));
}
开发者ID:amoAHCP,项目名称:vxms,代码行数:16,代码来源:ResponseExecution.java
示例18: executeInitialState
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
private static <T> void executeInitialState(
int _retry,
long _timeout,
ThrowableFutureConsumer<T> _userOperation,
VxmsShared vxmsShared,
Future<T> operationResult,
Lock lock,
Counter counter) {
final long initialRetryCounterValue = (long) (_retry + 1);
counter.addAndGet(
initialRetryCounterValue,
rHandler ->
executeDefaultState(_timeout, _userOperation, vxmsShared, operationResult, lock));
}
开发者ID:amoAHCP,项目名称:vxms,代码行数:15,代码来源:ResponseExecution.java
示例19: handleStatefulError
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
private static <T> void handleStatefulError(
String _methodId,
int _retry,
long _timeout,
long _circuitBreakerTimeout,
ThrowableFutureConsumer<T> _userOperation,
Consumer<Throwable> errorHandler,
ThrowableErrorConsumer<Throwable, T> onFailureRespond,
Consumer<Throwable> errorMethodHandler,
VxmsShared vxmsShared,
Consumer<ExecutionResult<T>> resultConsumer,
AsyncResult<T> event,
Lock lock,
Counter counter,
AsyncResult<Long> valHandler) {
long count = valHandler.result();
if (count <= DEFAULT_LONG_VALUE) {
setCircuitBreakerReleaseTimer(_retry, _circuitBreakerTimeout, vxmsShared, counter);
openCircuitBreakerAndHandleError(
errorHandler, onFailureRespond, errorMethodHandler, resultConsumer, event, lock, counter);
} else {
lock.release();
retry(
_methodId,
_retry,
_timeout,
_circuitBreakerTimeout,
_userOperation,
errorHandler,
onFailureRespond,
errorMethodHandler,
vxmsShared,
resultConsumer,
event);
}
}
开发者ID:amoAHCP,项目名称:vxms,代码行数:37,代码来源:ResponseExecution.java
示例20: executeInitialState
import io.vertx.core.shareddata.Lock; //导入依赖的package包/类
private static <T, V> void executeInitialState(
int _retry,
long _timeout,
ThrowableFutureBiConsumer<T, V> step,
T inputValue,
VxmsShared vxmsShared,
Future<V> operationResult,
Lock lock,
Counter counter) {
final long initialRetryCounterValue = (long) (_retry + 1);
counter.addAndGet(
initialRetryCounterValue,
rHandler ->
executeDefaultState(_timeout, step, inputValue, vxmsShared, operationResult, lock));
}
开发者ID:amoAHCP,项目名称:vxms,代码行数:16,代码来源:StepExecution.java
注:本文中的io.vertx.core.shareddata.Lock类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论