线程池

2020-12-01  本文已影响0人  何几时

思路:提前创建好多个线程,放入线程池中,使用时直接获取,用完放回池中。

好处:

  1. 提高响应时间(减少线程创建时间)
  2. 降低资源消耗(重复利用线程池中的线程,不需要每次都创建)
  3. 便于管理(还没用到)
    • corePoolSize:核心池的大小
    • maximumPoolSize:最大线程数
    • keepAliveTime:线程没有任务时最多保持多长时间后会终止

API:ExecutorService 和 Executors

ExecutorService是真正的线程池接口。常见的子类 ThreadPoolExecutor

Executors:工具类、线程池的工厂类,用于创建并返回不同类型的线程池

例程如下

package demo04_synchronized;

import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ForkJoinPool;

// 测试线程池
public class TestPool {

    public static void main(String[] args) {
        // 1.创建服务,创建线程池
        // newFixedThreadPool(para) ---> 其中 para参数 是线程池大小
        ExecutorService service = Executors.newFixedThreadPool(10);

        service.execute(new MyThread());
        service.execute(new MyThread());
        service.execute(new MyThread());
        service.execute(new MyThread());

        // 2.关闭链接
        service.shutdownNow();
    }
}

class MyThread implements Runnable{

    @Override
    public void run() {

        System.out.println(Thread.currentThread().getName());

    }
}
上一篇下一篇

猜你喜欢

热点阅读