提交 436b8e24 编写于 作者: oldratlee's avatar oldratlee 🔥

add TtlEnhanced tag interface

上级 dab7ea93
......@@ -28,7 +28,7 @@ import static com.alibaba.ttl.TransmittableThreadLocal.Transmitter.*;
* @see java.util.concurrent.ExecutorCompletionService
* @since 0.9.0
*/
public final class TtlCallable<V> implements Callable<V> {
public final class TtlCallable<V> implements Callable<V>, TtlEnhanced {
private final AtomicReference<Object> capturedRef;
private final Callable<V> callable;
private final boolean releaseTtlValueReferenceAfterCall;
......@@ -123,7 +123,7 @@ public final class TtlCallable<V> implements Callable<V> {
public static <T> TtlCallable<T> get(@Nullable Callable<T> callable, boolean releaseTtlValueReferenceAfterCall, boolean idempotent) {
if (null == callable) return null;
if (callable instanceof TtlCallable) {
if (callable instanceof TtlEnhanced) {
// avoid redundant decoration, and ensure idempotency
if (idempotent) return (TtlCallable<T>) callable;
else throw new IllegalStateException("Already TtlCallable!");
......
package com.alibaba.ttl;
/**
* a Ttl marker/tag interface, for ttl enhanced class, for example {@code TTL wrapper}.
*/
public interface TtlEnhanced {
}
......@@ -11,7 +11,7 @@ import static com.alibaba.ttl.TransmittableThreadLocal.Transmitter.*;
* @see java.util.concurrent.RecursiveAction
* @since 2.4.0
*/
public abstract class TtlRecursiveAction extends ForkJoinTask<Void> {
public abstract class TtlRecursiveAction extends ForkJoinTask<Void> implements TtlEnhanced {
private static final long serialVersionUID = -5753568484583412377L;
......
......@@ -11,7 +11,7 @@ import static com.alibaba.ttl.TransmittableThreadLocal.Transmitter.*;
* @see java.util.concurrent.RecursiveTask
* @since 2.4.0
*/
public abstract class TtlRecursiveTask<V> extends ForkJoinTask<V> {
public abstract class TtlRecursiveTask<V> extends ForkJoinTask<V> implements TtlEnhanced {
private static final long serialVersionUID = 1814679366926362436L;
......
......@@ -25,7 +25,7 @@ import static com.alibaba.ttl.TransmittableThreadLocal.Transmitter.*;
* @see java.util.concurrent.Executors
* @since 0.9.0
*/
public final class TtlRunnable implements Runnable {
public final class TtlRunnable implements Runnable, TtlEnhanced {
private final AtomicReference<Object> capturedRef;
private final Runnable runnable;
private final boolean releaseTtlValueReferenceAfterRun;
......@@ -122,7 +122,7 @@ public final class TtlRunnable implements Runnable {
public static TtlRunnable get(@Nullable Runnable runnable, boolean releaseTtlValueReferenceAfterRun, boolean idempotent) {
if (null == runnable) return null;
if (runnable instanceof TtlRunnable) {
if (runnable instanceof TtlEnhanced) {
// avoid redundant decoration, and ensure idempotency
if (idempotent) return (TtlRunnable) runnable;
else throw new IllegalStateException("Already TtlRunnable!");
......
......@@ -25,7 +25,7 @@ import static com.alibaba.ttl.TransmittableThreadLocal.Transmitter.*;
* @deprecated Use {@link TtlRunnable}, {@link java.util.concurrent.ScheduledExecutorService} instead of {@link java.util.Timer}, {@link java.util.TimerTask}.
*/
@Deprecated
public final class TtlTimerTask extends TimerTask {
public final class TtlTimerTask extends TimerTask implements TtlEnhanced {
private final AtomicReference<Object> capturedRef;
private final TimerTask timerTask;
private final boolean releaseTtlValueReferenceAfterRun;
......@@ -121,7 +121,7 @@ public final class TtlTimerTask extends TimerTask {
public static TtlTimerTask get(@Nullable TimerTask timerTask, boolean releaseTtlValueReferenceAfterRun, boolean idempotent) {
if (null == timerTask) return null;
if (timerTask instanceof TtlTimerTask) {
if (timerTask instanceof TtlEnhanced) {
// avoid redundant decoration, and ensure idempotency
if (idempotent) return (TtlTimerTask) timerTask;
else throw new IllegalStateException("Already TtlTimerTask!");
......
......@@ -2,6 +2,7 @@ package com.alibaba.ttl.threadpool;
import com.alibaba.ttl.TransmittableThreadLocal;
import com.alibaba.ttl.TtlCallable;
import com.alibaba.ttl.TtlEnhanced;
import com.alibaba.ttl.TtlRunnable;
import javax.annotation.Nonnull;
......@@ -17,7 +18,7 @@ import java.util.concurrent.*;
* @author Jerry Lee (oldratlee at gmail dot com)
* @since 0.9.0
*/
class ExecutorServiceTtlWrapper extends ExecutorTtlWrapper implements ExecutorService {
class ExecutorServiceTtlWrapper extends ExecutorTtlWrapper implements ExecutorService, TtlEnhanced {
private final ExecutorService executorService;
ExecutorServiceTtlWrapper(@Nonnull ExecutorService executorService) {
......
......@@ -2,6 +2,7 @@ package com.alibaba.ttl.threadpool;
import com.alibaba.ttl.TransmittableThreadLocal;
import com.alibaba.ttl.TtlRunnable;
import com.alibaba.ttl.TtlEnhanced;
import javax.annotation.Nonnull;
import java.util.concurrent.Executor;
......@@ -14,7 +15,7 @@ import java.util.concurrent.Executor;
* @author Jerry Lee (oldratlee at gmail dot com)
* @since 0.9.0
*/
class ExecutorTtlWrapper implements Executor {
class ExecutorTtlWrapper implements Executor, TtlEnhanced {
private final Executor executor;
ExecutorTtlWrapper(@Nonnull Executor executor) {
......
......@@ -2,6 +2,7 @@ package com.alibaba.ttl.threadpool;
import com.alibaba.ttl.TransmittableThreadLocal;
import com.alibaba.ttl.TtlCallable;
import com.alibaba.ttl.TtlEnhanced;
import com.alibaba.ttl.TtlRunnable;
import javax.annotation.Nonnull;
......@@ -15,7 +16,7 @@ import java.util.concurrent.*;
* @author Jerry Lee (oldratlee at gmail dot com)
* @since 0.9.0
*/
class ScheduledExecutorServiceTtlWrapper extends ExecutorServiceTtlWrapper implements ScheduledExecutorService {
class ScheduledExecutorServiceTtlWrapper extends ExecutorServiceTtlWrapper implements ScheduledExecutorService, TtlEnhanced {
final ScheduledExecutorService scheduledExecutorService;
public ScheduledExecutorServiceTtlWrapper(@Nonnull ScheduledExecutorService scheduledExecutorService) {
......
package com.alibaba.ttl.threadpool;
import com.alibaba.ttl.TransmittableThreadLocal;
import com.alibaba.ttl.TtlEnhanced;
import com.alibaba.ttl.threadpool.agent.TtlAgent;
import javax.annotation.Nullable;
......@@ -34,7 +35,7 @@ public final class TtlExecutors {
*/
@Nullable
public static Executor getTtlExecutor(@Nullable Executor executor) {
if (TtlAgent.isTtlAgentLoaded() || null == executor || executor instanceof ExecutorTtlWrapper) {
if (TtlAgent.isTtlAgentLoaded() || null == executor || executor instanceof TtlEnhanced) {
return executor;
}
return new ExecutorTtlWrapper(executor);
......@@ -47,7 +48,7 @@ public final class TtlExecutors {
*/
@Nullable
public static ExecutorService getTtlExecutorService(@Nullable ExecutorService executorService) {
if (TtlAgent.isTtlAgentLoaded() || executorService == null || executorService instanceof ExecutorServiceTtlWrapper) {
if (TtlAgent.isTtlAgentLoaded() || executorService == null || executorService instanceof TtlEnhanced) {
return executorService;
}
return new ExecutorServiceTtlWrapper(executorService);
......@@ -60,7 +61,7 @@ public final class TtlExecutors {
*/
@Nullable
public static ScheduledExecutorService getTtlScheduledExecutorService(@Nullable ScheduledExecutorService scheduledExecutorService) {
if (TtlAgent.isTtlAgentLoaded() || scheduledExecutorService == null || scheduledExecutorService instanceof ScheduledExecutorServiceTtlWrapper) {
if (TtlAgent.isTtlAgentLoaded() || scheduledExecutorService == null || scheduledExecutorService instanceof TtlEnhanced) {
return scheduledExecutorService;
}
return new ScheduledExecutorServiceTtlWrapper(scheduledExecutorService);
......@@ -82,7 +83,7 @@ public final class TtlExecutors {
* @since 2.8.0
*/
public static <T extends Executor> boolean isTtlWrapper(@Nullable T executor) {
return executor instanceof ExecutorTtlWrapper;
return executor instanceof TtlEnhanced;
}
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册