public class ExcutorTest {
static ExecutorService threadPool = Executors.newFixedThreadPool(1000);
public static int count = 0;
public static void main(String[] str) {
Task task = new Task();
for (int i = 1; i <= 1000; i++) {
threadPool.execute(task);
}
threadPool.shutdown();
System.out.println(Thread.currentThread().getName() + ":count->" + count);
try {
if (!threadPool.awaitTermination(10000, TimeUnit.MILLISECONDS)) {
//把超时时间改成1000,将会执行超时处理
// 超时的时候向线程池中所有的线程发出中断(interrupted)。
threadPool.shutdownNow();
}
} catch (InterruptedException e) {
threadPool.shutdownNow();
}
System.out.println(Thread.currentThread().getName() + ":" + count);
}
private class Task implements Runnable {
@Override
public void run() {
synchronized (this) {
count++;
System.out.println(Thread.currentThread().getName() + ":" + count);
try {
Thread.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
参考文章:https://blog.csdn.net/alinshen/article/details/78090043