线程池
背景: 经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大
思路: 提前创建好多个线程,放入线程池,使用时直接获取,使用完放回,避免频繁创建销毁
方法:
1、corePoolSize:核心池大小
2、maximunPoolSize:最大线程数
3、keepAliveTime:线程没有任务时多长时间会终止
线程池的实现
ExecutorService:线程池接口,常见子类ThreadPoolExecutor
1、void execute(Runnable command):执行命令,没有return,用来执行Runnable
2、 Future submit(Callable task):执行任务,有return,用来执行Callable
3、void shutdown():关闭连接池
Executors:工具类、线程池的工厂类,用于创建并返回不同类型线程池
public class TestThreadPool {
public static void main(String[] args) {
//创建服务,创建线程池
ExecutorService service= Executors.newFixedThreadPool(10);
service.execute(new MyThread());
service.execute(new MyThread());
service.execute(new MyThread());
service.execute(new MyThread());
//关闭链接
service.shutdown();
}
}
class MyThread implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
输出结果: