线程池相关API以及线程池的使用

线程池就是一个容器,里面存放了很多线程,里面的线程可以复用的, 可以多次执行任务。

相关API:
    Executor(接口):Executor是所有线程池的顶层接口, 里面仅仅定义了执行线程任务的方法。
    ExecutorService(接口):Executor的子接口,也表示线程池。 这个接口中不仅定义了执行线程任务							    的方法,还定义了其他操作线程池的方法。
    Executors(工具类): Executors是操作线程池的工具类, 里面定义了一些方法, 可以直接获取线程						    池对象。

注意: 线程池对象不能由我们自己new, 而是要通过Executors这个工具类进行获取。

Executors中获取线程池的方法:
    static ExecutorService newFixedThreadPool(int nThreads): 用来获取一个定长的线程池, 			参数为线程池的长度。

ExecutorService操作线程池的方法:
    submit(Runnable task): 使用线程池执行任务。
    shutdown(): 销毁线程池

线程池的使用步骤:
    1. 使用Executors的静态方法获取线程池对象。
    2. 定义Runnable接口的实现类,重写run方法,定义要执行的任务。
    3. 调用submit方法,传递Runnable接口的实现类对象, 指定并执行Runnable实现类中的任务。
    4. 销毁线程池(一般不做)

public class Demo01ThreadPool {
public static void main(String[] args) {
//使用Executors的静态方法获取线程池对象。
ExecutorService pool = Executors.newFixedThreadPool(2);//2表示线程池中有两个线程.
//调用submit方法,传递Runnable接口的实现类对象, 指定并执行Runnable实现类中的任务。
MyTask myTask = new MyTask();
pool.submit(myTask);
pool.submit(myTask);
pool.submit(myTask);
//销毁线程池
//pool.shutdown();
}
}

public class MyTask implements Runnable{
@Override
public void run() {
//输出100行HelloWorld
for(int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName() + “正在输出HelloWorld:” + i);
}
}
}

你可能感兴趣的:(java基础)