- 什么是线程池
可以容纳多个线程的容器;
程序可以从线程池获取线程来完成目标代码;
也可以将线程归还给线程池,省去了创建线程和销毁线程这个月非常繁琐的操作
- 线程池的使用
public static ExecutorService newFixdeThreadPool(int nThreads);
//得到一个线程对象,初始化参数是要求的当前线程池中的线程数
public Future submit(Runnable target);
//从线程池中获取一个线程对象,并且执行给定的Runnable接口实现类对象作为目标
package com.wcc.Thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class MyThreadtest implements Runnable{
@Override
public void run() {
System.out.println("Runnable 接口实现类,线程目标代码");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("我叫:" + Thread.currentThread().getName());
}
}
public class Demo7 {
public static void main(String[] args) {
//创建线程池对象
ExecutorService service = Executors.newFixedThreadPool(5);
//创建一个MyThreadtest Runnable接口实现类对象
MyThreadtest target = new MyThreadtest();
//使用线程池对象中的一个线程,指定目标代码
//初始化线程数为5,这里使用的是线程池中已经存在的5个线程来执行代码
service.submit(target);
service.submit(target);
service.submit(target);
service.submit(target);
service.submit(target);
//原本的五个线程都在被使用中,这里需要等待五个线程执行完毕,出现空线程之后
//才能执行下面代码
service.submit(target);
service.submit(target);
}
}
展示结果:
Runnable 接口实现类,线程目标代码
Runnable 接口实现类,线程目标代码
Runnable 接口实现类,线程目标代码
Runnable 接口实现类,线程目标代码
Runnable 接口实现类,线程目标代码
我叫:pool-1-thread-4
Runnable 接口实现类,线程目标代码
我叫:pool-1-thread-1
我叫:pool-1-thread-3
Runnable 接口实现类,线程目标代码
我叫:pool-1-thread-2
我叫:pool-1-thread-5
我叫:pool-1-thread-4
我叫:pool-1-thread-3