1、为什么要使用线程池?
例如:当前我们有一个任务,任务内容为输出当前线程的名称,然后我们创建一个该任务,创建一个线程,将该任务交给该线程,然后启动线程。
public class Task implements Runnable{
@Override
public void run() {
//输出当前线程的名称
System.out.println(Thread.currentThread().getName());
}
}
public class ThreadPool001 {
public static void main(String[] args) {
//创建任务
Runnable task = new Task();
//创建线程
Thread thread = new Thread(task);
//启动线程
thread.start();
}
}
输出结果:
"C:\Program Files\Java\jdk1.8.0\bin\java.exe"
Thread-0
我们的一个线程它只能执行一个任务,我们不能创建多个任务,并将它们都放在同一个线程连续执行,我们只能重新再创建其他线程,启动并执行。线程在执行完任务之后就会销毁,如果再有任务要执行的话,需要重新创建线程。导致问题就是**线程不能复用,重复创建和销毁线程会耗时、耗资源,**此时我们要考虑线程如果可以复用就好了,其好处就是省时省资源,我们可以看看线程池是如何执行任务的。
public class ThreadPool001 {