目录
execute
// 执行任务void execute ( Runnable command );
@Slf4j(topic = "c.ThreadPoolExecutor")//日志注解,可以使用sout替代
public class ThreadPoolExecutorTest {
public static void main(String[] args) {
ExecutorService pool = Executors.newFixedThreadPool(2, new ThreadFactory() {
//threadFactory 线程工厂 - 可以为线程创建时起个好名字
private AtomicInteger t = new AtomicInteger(1);
@Override
public Thread newThread(Runnable r) {
return new Thread(r, "mypool-"+t.getAndIncrement());
}
});
pool.execute(() -> {
log.debug("1");//可以使用sout替代
});
pool.execute(() -> {
log.debug("2");
});
pool.execute(() -> {
log.debug("3");
});
}
}
运行结果
21:20:28.212 c.ThreadPoolExecutor [mypool-1] - 1
21:20:28.212 c.ThreadPoolExecutor [mypool-2] - 2
21:20:28.223 c.ThreadPoolExecutor [mypool-1] - 3//线程池限制大小为2,线程池1执行后继续任务
submit
// 提交任务 task ,用返回值 Future 获得任务执行结果< T > Future < T > submit ( Callable < T > task );
@Slf4j(topic = "c.ThreadPoolExecutorCallable")
public class ThreadPoolExecutorCallable {
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService p = Executors.newFixedThreadPool(2);
Future<String> future = p.submit(() -> {
log.debug("running ");
Thread.sleep(1000);
return "ok";
});
log.debug("return :{}"