/**
?*
*背景:
*经常创建和销毁线程,消耗特别大的资源,比如并发的情况下的线程,对性能影响很大。
*线程池就是问题为了解决这个问题,提前创建好多个线程,放在线程池中,使用时直接获取,使用完放回线程池中,可以避免频繁的创建、销毁,实现重复利用。
?*
*优点:
*提高相应速度(减少创建线程的时间)
*降低资源消耗(重复利用线程池中的线程,不需要每次都创建)
*便于线程管理:corePoolSize:核心池的大小。maximumPoolSize:最大线程数。keepAliveTime:线程没有任务时最多保持多长时间后终止。
?*
*线程池相关的API:ExecutorService:线程池接口。
*常见的实现类:ThreadPoolExecutor。
?*
* void execute(Runnable command):执行任务命令,没有返回值,一般用来执行Runnable.
?*
* Future submit(Callable task):执行任务,有返回值,一般用来执行Callable
?*
* void shutdown():关闭连接池
?*
* Executors:工具类,线程池的工厂类,用来创建并返回不同类型的线程池
?*
?*/
public class MyPool {
????public static void main(String[] args) {
// 1、创建服务,创建线程池
????????ExecutorService service = Executors.newFixedThreadPool(10);
????????MyThread myThread = new MyThread();
//执行
????????service.execute(myThread);
????????service.execute(myThread);
????????service.execute(myThread);
????????service.execute(myThread);
????????service.execute(myThread);
????????service.execute(myThread);
????????service.execute(myThread);
????????service.execute(myThread);
????????service.execute(myThread);
????????service.execute(myThread);
????????service.execute(myThread);
//关闭连接
????????service.shutdown();
????}
}
//演员
class MyThread implements Runnable {
????@Override
????public void run() {
????????while (true) {
????????????System.out.println(Thread.currentThread().getName());
????????}
????}
}