TERMINATED
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@2cd3e0cd rejected from java.util.concurrent.ThreadPoolExecutor@77da21eb[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
package com.company;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedTransferQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class ExecutorDemo {
public static void main(String[] args) {
ExecutorService pool =
new ThreadPoolExecutor(2, 2, 10000, TimeUnit.MILLISECONDS, new LinkedTransferQueue<>());
pool.shutdown();
for(int i=0;i<10;i++) {
pool.submit(new Task());
}
}
private static class Task implements Callable<Integer> {
public Integer call() {
try {
System.out.println(Thread.currentThread().getName() + " running...");
Thread.sleep(10000l);
} catch(InterruptedException e) {
e.printStackTrace();
}
return 1;
}
}
}
SHUTDOWN
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@2cd3e0cd rejected from java.util.concurrent.ThreadPoolExecutor@77da21eb[Shutting down, pool size = 2, active threads = 2, queued tasks = 8, completed tasks = 0]
package com.company;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedTransferQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class ExecutorDemo {
public static void main(String[] args) {
ExecutorService pool =
new ThreadPoolExecutor(2, 2, 10000, TimeUnit.MILLISECONDS, new LinkedTransferQueue<>());
for (int i = 0; i < 10; i++) {
pool.submit(new Task());
}
pool.shutdown();
for(int i=0;i<10;i++) {
pool.submit(new Task());
}
}
private static class Task implements Callable<Integer> {
public Integer call() {
try {
System.out.println(Thread.currentThread().getName() + " running...");
Thread.sleep(10000l);
} catch(InterruptedException e) {
e.printStackTrace();
}
return 1;
}
}
}
RUNNING
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@2cd3e0cd rejected from java.util.concurrent.ThreadPoolExecutor@77da21eb[Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]
package com.company;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class ExecutorDemo {
public static void main(String[] args) {
ExecutorService pool =
new ThreadPoolExecutor(2, 2, 10000, TimeUnit.MILLISECONDS, new SynchronousQueue<>());
for (int i = 0; i < 10; i++) {
pool.submit(new Task());
}
}
private static class Task implements Callable<Integer> {
public Integer call() {
try {
System.out.println(Thread.currentThread().getName() + " running...");
Thread.sleep(10000l);
} catch(InterruptedException e) {
e.printStackTrace();
}
return 1;
}
}
}