Updated to 1.0.3
This commit is contained in:
parent
065635e24d
commit
02ad72c643
2
pom.xml
2
pom.xml
@ -7,7 +7,7 @@
|
||||
|
||||
<artifactId>common-utils</artifactId>
|
||||
<groupId>org.warp</groupId>
|
||||
<version>1.0.2</version>
|
||||
<version>1.0.3</version>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
|
@ -18,7 +18,7 @@ public class ParallelUtils {
|
||||
int parallelism,
|
||||
int groupSize,
|
||||
BiConsumer<K, V> consumer) {
|
||||
BoundedExecutorService parallelExecutor = BoundedExecutorService.create(maxQueueSize, parallelism, 0, TimeUnit.MILLISECONDS, new ShortNamedThreadFactory("ForEachParallel"), (a, b) -> {});
|
||||
BoundedExecutorService parallelExecutor = BoundedExecutorService.create(maxQueueSize, parallelism, parallelism, 0, TimeUnit.MILLISECONDS, new ShortNamedThreadFactory("ForEachParallel"), (a, b) -> {});
|
||||
final int CHUNK_SIZE = groupSize;
|
||||
IntWrapper count = new IntWrapper(CHUNK_SIZE);
|
||||
VariableWrapper<Object[]> keys = new VariableWrapper<>(new Object[CHUNK_SIZE]);
|
||||
@ -58,7 +58,7 @@ public class ParallelUtils {
|
||||
int parallelism,
|
||||
int groupSize,
|
||||
TriConsumer<K1, K2, V> consumer) {
|
||||
BoundedExecutorService parallelExecutor = BoundedExecutorService.create(maxQueueSize, parallelism, 0, TimeUnit.MILLISECONDS, new ShortNamedThreadFactory("ForEachParallel"), (a, b) -> {});
|
||||
BoundedExecutorService parallelExecutor = BoundedExecutorService.create(maxQueueSize, parallelism, parallelism, 0, TimeUnit.MILLISECONDS, new ShortNamedThreadFactory("ForEachParallel"), (a, b) -> {});
|
||||
final int CHUNK_SIZE = groupSize;
|
||||
IntWrapper count = new IntWrapper(CHUNK_SIZE);
|
||||
VariableWrapper<Object[]> keys1 = new VariableWrapper<>(new Object[CHUNK_SIZE]);
|
||||
|
@ -14,64 +14,60 @@ public interface BoundedExecutorService extends ExecutorService {
|
||||
|
||||
@Deprecated
|
||||
static ExecutorService createUnbounded(
|
||||
boolean resizable,
|
||||
int corePoolSize,
|
||||
int maxPoolSize,
|
||||
long keepAliveTime,
|
||||
TimeUnit unit,
|
||||
@Nullable BiConsumer<Boolean, Integer> queueSizeStatus) {
|
||||
return create(0, corePoolSize, keepAliveTime, unit, Executors.defaultThreadFactory(), queueSizeStatus);
|
||||
return create(0, corePoolSize, maxPoolSize, keepAliveTime, unit, Executors.defaultThreadFactory(), queueSizeStatus);
|
||||
}
|
||||
|
||||
static ExecutorService createUnbounded(
|
||||
boolean resizable,
|
||||
int corePoolSize,
|
||||
int maxPoolSize,
|
||||
long keepAliveTime,
|
||||
TimeUnit unit,
|
||||
ThreadFactory threadFactory,
|
||||
@Nullable BiConsumer<Boolean, Integer> queueSizeStatus) {
|
||||
var threadPoolExecutor = new ThreadPoolExecutor(corePoolSize,
|
||||
corePoolSize,
|
||||
keepAliveTime,
|
||||
unit,
|
||||
new LinkedBlockingQueue<>(),
|
||||
threadFactory
|
||||
);
|
||||
return create(0, corePoolSize, keepAliveTime, unit, threadFactory, Duration.ofDays(1000000), queueSizeStatus);
|
||||
return create(0, corePoolSize, maxPoolSize, keepAliveTime, unit, threadFactory, Duration.ofDays(100000), queueSizeStatus);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
static BoundedExecutorService create(int maxQueueSize,
|
||||
static BoundedExecutorService create(
|
||||
int maxQueueSize,
|
||||
int corePoolSize,
|
||||
int maxPoolSize,
|
||||
long keepAliveTime,
|
||||
TimeUnit unit,
|
||||
@Nullable BiConsumer<Boolean, Integer> queueSizeStatus) {
|
||||
return create(maxQueueSize, corePoolSize, keepAliveTime, unit, Executors.defaultThreadFactory(), queueSizeStatus);
|
||||
return create(maxQueueSize, corePoolSize, maxPoolSize, keepAliveTime, unit, Executors.defaultThreadFactory(), queueSizeStatus);
|
||||
}
|
||||
|
||||
static BoundedExecutorService create(int maxQueueSize,
|
||||
static BoundedExecutorService create(
|
||||
int maxQueueSize,
|
||||
int corePoolSize,
|
||||
int maxPoolSize,
|
||||
long keepAliveTime,
|
||||
TimeUnit unit,
|
||||
ThreadFactory threadFactory,
|
||||
@Nullable BiConsumer<Boolean, Integer> queueSizeStatus) {
|
||||
var threadPoolExecutor = new ThreadPoolExecutor(corePoolSize,
|
||||
corePoolSize,
|
||||
keepAliveTime,
|
||||
unit,
|
||||
new LinkedBlockingQueue<>(),
|
||||
threadFactory
|
||||
);
|
||||
return create(maxQueueSize, corePoolSize, keepAliveTime, unit, threadFactory, Duration.ofDays(1000000), queueSizeStatus);
|
||||
return create(maxQueueSize, corePoolSize, maxPoolSize, keepAliveTime, unit, threadFactory, Duration.ofDays(100000), queueSizeStatus);
|
||||
}
|
||||
|
||||
static BoundedExecutorService create(int maxQueueSize,
|
||||
static BoundedExecutorService create(
|
||||
int maxQueueSize,
|
||||
int corePoolSize,
|
||||
int maxPoolSize,
|
||||
long keepAliveTime,
|
||||
TimeUnit unit,
|
||||
ThreadFactory threadFactory,
|
||||
Duration queueItemTtl,
|
||||
@Nullable BiConsumer<Boolean, Integer> queueSizeStatus) {
|
||||
var queue = new LinkedBlockingQueue<Runnable>();
|
||||
var threadPoolExecutor = new ThreadPoolExecutor(corePoolSize,
|
||||
corePoolSize,
|
||||
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(corePoolSize,
|
||||
maxPoolSize,
|
||||
keepAliveTime,
|
||||
unit,
|
||||
queue,
|
||||
|
@ -13,11 +13,18 @@ public class BoundedQueueTest {
|
||||
|
||||
@Test
|
||||
public void testBoundedQueue() throws InterruptedException {
|
||||
testBoundedQueue(1, 1);
|
||||
testBoundedQueue(1, 10);
|
||||
testBoundedQueue(4, 10);
|
||||
}
|
||||
|
||||
public void testBoundedQueue(int corePoolSize, int maxPoolSize) throws InterruptedException {
|
||||
int maxQueueSize = 2;
|
||||
AtomicInteger queueSize = new AtomicInteger();
|
||||
AtomicReference<AssertionFailedError> failedError = new AtomicReference<>();
|
||||
var executor = BoundedExecutorService.create(maxQueueSize,
|
||||
1,
|
||||
corePoolSize,
|
||||
maxPoolSize,
|
||||
0L,
|
||||
TimeUnit.MILLISECONDS,
|
||||
new ShortNamedThreadFactory("test"),
|
||||
|
Loading…
Reference in New Issue
Block a user