public static final class ParallelProcedure.LogicProvider.SingletonLogic<S,P extends Consumer<? super S>> extends Object implements ParallelProcedure.LogicProvider<S,P>
ParallelProcedure.LogicProvider.SingletonLogic<S,P extends Consumer<? super S>>| Constructor and Description |
|---|
SingletonLogic(P logic) |
| Modifier and Type | Method and Description |
|---|---|
void |
disposeLogic(P logic,
Throwable cause)
Signals the provider instance that the passed logic instance is no longer used and provides the cause
for its disposal (e.g.
|
P |
provideLogic()
Provides the actual logic
Consumer to be applied to the elements enountered by a
ParallelProcedure. |
public SingletonLogic(P logic)
public P provideLogic()
ParallelProcedure.LogicProviderConsumer to be applied to the elements enountered by a
ParallelProcedure.
This method always gets called by the actual worker thread that will
use the provided logic, so that a call of Thread.currentThread() inside the method
will always return the logic executing thread. The intention is to give complex provider implementations
a chance to get to know the executing thread before the logic is executed. It is however stronly
discouraged to try and control the worker thread activity from outside as it can disturb or disrupt
the actual thread management. E.g. any explicit interruption can cause the worker thread to be
abolished and killed and the logic instance to be disposed.
provideLogic in interface ParallelProcedure.LogicProvider<S,P extends Consumer<? super S>>public void disposeLogic(P logic, Throwable cause)
ParallelProcedure.LogicProviderInterruptedException because the executing worker has been abolished)
An implementation of this method can be anything from a no-op to complex resource clean up.
disposeLogic in interface ParallelProcedure.LogicProvider<S,P extends Consumer<? super S>>logic - the not longer used logic that shall be disposed.cause - the cause for the disposal.Copyright © 2022 MicroStream Software. All rights reserved.