线程池

package cn.dali3.code08;

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

/*线程池:
* 在jdk1.5之后,java为我们提供了现成的线程池,可以直接使用。
* 线程池的作用就是在程序第一次启动的时候,创建多个线程放到一个集合中,排列方法类似于队列
* 当我们要使用线程执行任务的时候,从里面取出一个线程(remove),用完之后归还到线程池中(add)
* 优点:
*       1.降低资源消耗,减少创建销毁资源的次数,线程可以重复利用,可以执行不同的任务。
*       2.提高响应速度,当任务需要执行时,不需要等待创建线程,直接使用
*       3.提高线程的可管理性。
*
* jdk1.5之后,提供了  java.util.concurrent.:线程池工厂类,用来生成线程池
* 静态方法:
*   static ExecutorService newFixedThreadPool(int nThreads):创建一个指定数量的线程池
*
*   nThreads线程的个数
*   ExecutorService 是一个接口,返回的是其实现类对象,可以用ExecutorService接口接受(面向接口)
*
*   ExecutorService接口的常用方法:
*       1.submit(Runnable task) 提交一个Runnable任务用于执行
*       2.void shutdown(); 销毁线程池
*
*   当线程执行完毕后会自动归还到线程池中,无需手动。这样我们把需要的任务写在Runnable的实现类中
*   利用线程池中的线程用来执行。
*
*   步骤:1.使用Executors类中的静态方法newFixedThreadPool创建一个线程池
*        2.创建Runnable任务,
*        3.用submit方法执行任务*/
public class Demo01 {
    public static void main(String[] args) {
        ExecutorService es = Executors.newFixedThreadPool(3);
        es.submit(new RunnableImpl1());
        es.submit(new RunnableImpl1());
        es.submit(new RunnableImpl1());

    }
}

接口:

package cn.dali3.code08;

public class RunnableImpl1 implements Runnable {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"正在执行");
    }
}

上一篇:ExecutorService


下一篇:固定线程池和预定线程池之间的Java差异