Java Code Examples for java.util.concurrent.ConcurrentMap#compute()
The following examples show how to use
java.util.concurrent.ConcurrentMap#compute() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ContextManager.java From incubator-nemo with Apache License 2.0 | 6 votes |
/** * Initiates a context and stores to the specified map. * * @param contexts map for storing context * @param transferIndexCounter counter for generating transfer index * @param dataDirection data direction to include in the context id * @param contextGenerator a function that returns context from context id * @param executorId id of the remote executor * @param <T> {@link ByteInputContext} or {@link ByteOutputContext} * @param isPipe is a pipe context * @return generated context */ <T extends ByteTransferContext> T newContext(final ConcurrentMap<Integer, T> contexts, final AtomicInteger transferIndexCounter, final ByteTransferDataDirection dataDirection, final Function<ContextId, T> contextGenerator, final String executorId, final boolean isPipe) { setRemoteExecutorId(executorId); final int transferIndex = transferIndexCounter.getAndIncrement(); final ContextId contextId = new ContextId(localExecutorId, executorId, dataDirection, transferIndex, isPipe); final T context = contexts.compute(transferIndex, (index, existingContext) -> { if (existingContext != null) { throw new RuntimeException(String.format("Duplicate ContextId: %s", contextId)); } return contextGenerator.apply(contextId); }); channel.writeAndFlush(context).addListener(context.getChannelWriteListener()); return context; }
Example 2
Source File: ContextManager.java From nemo with Apache License 2.0 | 6 votes |
/** * Initiates a context and stores to the specified map. * @param contexts map for storing context * @param transferIndexCounter counter for generating transfer index * @param dataDirection data direction to include in the context id * @param contextGenerator a function that returns context from context id * @param executorId id of the remote executor * @param <T> {@link ByteInputContext} or {@link ByteOutputContext} * @return generated context */ <T extends ByteTransferContext> T newContext(final ConcurrentMap<Integer, T> contexts, final AtomicInteger transferIndexCounter, final ByteTransferDataDirection dataDirection, final Function<ContextId, T> contextGenerator, final String executorId) { setRemoteExecutorId(executorId); final int transferIndex = transferIndexCounter.getAndIncrement(); final ContextId contextId = new ContextId(localExecutorId, executorId, dataDirection, transferIndex); final T context = contexts.compute(transferIndex, (index, existingContext) -> { if (existingContext != null) { throw new RuntimeException(String.format("Duplicate ContextId: %s", contextId)); } return contextGenerator.apply(contextId); }); channel.writeAndFlush(context).addListener(context.getChannelWriteListener()); return context; }
Example 3
Source File: ConcurrentHashMap8Test.java From caffeine with Apache License 2.0 | 4 votes |
/** * compute does not replace if the function returns null */ public void testCompute() { ConcurrentMap map = map5(); map.compute(six, (x, y) -> null); assertFalse(map.containsKey(six)); }
Example 4
Source File: ConcurrentHashMap8Test.java From caffeine with Apache License 2.0 | 4 votes |
/** * compute removes when the given key is present and function returns null */ public void testCompute4() { ConcurrentMap map = map5(); map.compute(one, (x, y) -> null); assertFalse(map.containsKey(one)); }