package com.kidgrow.common.utils;
import com.alibaba.ttl.TtlCallable;
import com.alibaba.ttl.TtlRunnable;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.util.concurrent.ListenableFuture;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
/**
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
*
* @Description: 这是{@link ThreadPoolTaskExecutor}的一个简单替换,可搭配TransmittableThreadLocal实现父子线程之间的数据传递
* @Project:
* @CreateDate: Created in 2020/2/13 16:58
* @Author: liuke
*/
public class CustomThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {
private static final long serialVersionUID = -5887035957049288777L;
@Override
public void execute(Runnable runnable) {
Runnable ttlRunnable = TtlRunnable.get(runnable);
super.execute(ttlRunnable);
}
@Override
public Future submit(Callable task) {
Callable ttlCallable = TtlCallable.get(task);
return super.submit(ttlCallable);
}
@Override
public Future> submit(Runnable task) {
Runnable ttlRunnable = TtlRunnable.get(task);
return super.submit(ttlRunnable);
}
@Override
public ListenableFuture> submitListenable(Runnable task) {
Runnable ttlRunnable = TtlRunnable.get(task);
return super.submitListenable(ttlRunnable);
}
@Override
public ListenableFuture submitListenable(Callable task) {
Callable ttlCallable = TtlCallable.get(task);
return super.submitListenable(ttlCallable);
}
}