use of com.dtp.core.thread.DtpExecutor in project austin by ZhongFuCheng3y.
the class ThreadPoolTest method send.
@GetMapping("/tp")
public void send() {
DtpExecutor dtpExecutor1 = DtpRegistry.getExecutor("austin-im.notice");
DtpExecutor dtpExecutor2 = DtpRegistry.getExecutor("execute-xxl-thread-pool");
DtpExecutor dtpExecutor3 = DtpRegistry.getExecutor("dynamic-tp-test-2");
System.out.println(dtpExecutor1);
System.out.println(dtpExecutor2);
System.out.println(dtpExecutor3);
}
use of com.dtp.core.thread.DtpExecutor in project dynamic-tp by dromara.
the class RejectedAware method beforeReject.
/**
* Do sth before reject.
* @param executor ThreadPoolExecutor instance
*/
default void beforeReject(ThreadPoolExecutor executor) {
if (executor instanceof DtpExecutor) {
DtpExecutor dtpExecutor = (DtpExecutor) executor;
dtpExecutor.incRejectCount(1);
Runnable runnable = () -> AlarmManager.doAlarm(dtpExecutor, REJECT);
AlarmManager.triggerAlarm(dtpExecutor.getThreadPoolName(), REJECT.getValue(), runnable);
}
}
use of com.dtp.core.thread.DtpExecutor in project dynamic-tp by dromara.
the class DtpPostProcessor method postProcessAfterInitialization.
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (!(bean instanceof ThreadPoolExecutor)) {
return bean;
}
if (bean instanceof DtpExecutor) {
DtpExecutor dtpExecutor = (DtpExecutor) bean;
if (bean instanceof EagerDtpExecutor) {
((TaskQueue) dtpExecutor.getQueue()).setExecutor((EagerDtpExecutor) dtpExecutor);
}
registerDtp(dtpExecutor);
return dtpExecutor;
}
ApplicationContext applicationContext = ApplicationContextHolder.getInstance();
DynamicTp dynamicTp;
try {
dynamicTp = applicationContext.findAnnotationOnBean(beanName, DynamicTp.class);
if (dynamicTp == null) {
return bean;
}
} catch (NoSuchBeanDefinitionException e) {
log.error("There is no bean with the given name {}", beanName, e);
return bean;
}
String poolName = StringUtils.isNotBlank(dynamicTp.value()) ? dynamicTp.value() : beanName;
registerCommon(poolName, (ThreadPoolExecutor) bean);
return bean;
}
use of com.dtp.core.thread.DtpExecutor in project dynamic-tp by dromara.
the class ThreadPoolBuilder method buildDtpExecutor.
/**
* Build dynamic threadPoolExecutor.
*
* @param builder the targeted builder
* @return the newly created DtpExecutor instance
*/
private DtpExecutor buildDtpExecutor(ThreadPoolBuilder builder) {
Assert.notNull(builder.threadPoolName, "The thread pool name must not be null.");
DtpExecutor dtpExecutor = createInternal(builder);
dtpExecutor.setThreadPoolName(builder.threadPoolName);
dtpExecutor.allowCoreThreadTimeOut(builder.allowCoreThreadTimeOut);
dtpExecutor.setWaitForTasksToCompleteOnShutdown(builder.waitForTasksToCompleteOnShutdown);
dtpExecutor.setAwaitTerminationSeconds(builder.awaitTerminationSeconds);
dtpExecutor.setPreStartAllCoreThreads(builder.preStartAllCoreThreads);
dtpExecutor.setRunTimeout(builder.runTimeout);
dtpExecutor.setQueueTimeout(builder.queueTimeout);
dtpExecutor.setTaskWrappers(builder.taskWrappers);
dtpExecutor.setNotifyItems(builder.notifyItems);
return dtpExecutor;
}
use of com.dtp.core.thread.DtpExecutor in project dynamic-tp by dromara.
the class ThreadPoolBuilder method createInternal.
private DtpExecutor createInternal(ThreadPoolBuilder builder) {
DtpExecutor dtpExecutor;
if (ioIntensive) {
TaskQueue taskQueue = new TaskQueue(builder.queueCapacity);
dtpExecutor = new EagerDtpExecutor(builder.corePoolSize, builder.maximumPoolSize, builder.keepAliveTime, builder.timeUnit, taskQueue, builder.threadFactory, builder.rejectedExecutionHandler);
taskQueue.setExecutor((EagerDtpExecutor) dtpExecutor);
} else {
dtpExecutor = new DtpExecutor(builder.corePoolSize, builder.maximumPoolSize, builder.keepAliveTime, builder.timeUnit, builder.workQueue, builder.threadFactory, builder.rejectedExecutionHandler);
}
return dtpExecutor;
}
Aggregations