package com.github.ltsopensource.tasktracker;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @author Robert HG (254963746@qq.com) on 5/11/15.
*/
public class ThreadPoolDynamicTest {
public static void main(String[] args) {
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(4, 8, 30, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>(), // 直接提交给线程而不保持它们
new ThreadPoolExecutor.AbortPolicy()); // A handler for rejected tasks that throws a
for (int i = 1; i < 12; i++) {
try {
final int finalI = i;
threadPoolExecutor.submit(new Runnable() {
@Override
public void run() {
try {
System.out.println("第" + finalI + "个开始执行");
Thread.sleep(1000000000L);
} catch (InterruptedException e) {
System.out.println("第" + finalI + "个执行结果失败");
}
}
});
System.out.println("第" + i + "个提交成功");
} catch (Exception e) {
System.out.println("第" + i + "个提交失败");
}
}
threadPoolExecutor.setMaximumPoolSize(20);
for (int i = 12; i < 20; i++) {
try {
final int finalI = i;
threadPoolExecutor.submit(new Runnable() {
@Override
public void run() {
try {
System.out.println("第" + finalI + "个开始执行");
Thread.sleep(1000000000L);
} catch (InterruptedException e) {
System.out.println("第" + finalI + "个执行结果失败");
}
}
});
System.out.println("第" + i + "个提交成功");
} catch (Exception e) {
System.out.println("第" + i + "个提交失败");
}
}
}
}