package com.highdatas.mdm.util.pool;
|
|
import java.util.concurrent.*;
|
|
/**
|
* @author kimi
|
* @description
|
* @date 2020-04-14 11:45
|
*/
|
|
|
public class PassiveMqThreadPoolExecutor extends ThreadPoolExecutor {
|
|
public PassiveMqThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
|
long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {
|
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
|
}
|
|
public PassiveMqThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
|
long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue,
|
RejectedExecutionHandler handler) {
|
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, handler);
|
}
|
|
public PassiveMqThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
|
long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue,
|
ThreadFactory threadFactory) {
|
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory);
|
}
|
|
public PassiveMqThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
|
long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue,
|
ThreadFactory threadFactory, RejectedExecutionHandler handler) {
|
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, handler);
|
}
|
|
@Override
|
protected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value) {
|
return new ComparableFutureTask<T>(runnable, value);
|
}
|
|
@Override
|
protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable) {
|
return new ComparableFutureTask<T>(callable);
|
}
|
|
protected class ComparableFutureTask<V>
|
extends FutureTask<V> implements Comparable<ComparableFutureTask<V>> {
|
private Object object;
|
|
public ComparableFutureTask(Callable<V> callable) {
|
super(callable);
|
object = callable;
|
}
|
|
public ComparableFutureTask(Runnable runnable, V result) {
|
super(runnable, result);
|
object = runnable;
|
}
|
|
@Override
|
@SuppressWarnings("unchecked")
|
public int compareTo(ComparableFutureTask<V> o) {
|
if (this == o) {
|
return 0;
|
}
|
if (o == null) {
|
return -1; // high priority
|
}
|
if (object != null && o.object != null) {
|
if (object.getClass().equals(o.object.getClass())) {
|
if (object instanceof Comparable) {
|
return ((Comparable) object).compareTo(o.object);
|
}
|
}
|
}
|
return 0;
|
}
|
}
|
}
|