因为创建线程是非常消耗资源的,所以如果要创建线程比较频繁,我们可以创建一个线程池去存贮线程,再需要的时候去线程池内拿取就行,这样可以节约资源提升性能。
代码如下:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
//测试线程池
public class TestPool {
public static void main(String[] args) {
//1.创建线程池
//newFixedThreadPool():线程池大小
//ExecutorService:线程池接口
ExecutorService service = Executors.newFixedThreadPool(10);
//从service里面获取线程执行Runnable实现类MyThread
service.execute(new MyThread());
service.execute(new MyThread());
service.execute(new MyThread());
service.execute(new MyThread());
//2.关闭线程池连接
service.shutdown();
}
}
class MyThread implements Runnable{
@Override
public void run() {
//Thread.currentThread().getName():为获取线程的名字
System.out.println(Thread.currentThread().getName());
}
}
当运行代码时,从线程池获取的线程会互相争抢资源,没有锁的限制,每一次运行都会输出不一样的结果。
例如:
pool-1-thread-1
pool-1-thread-4
pool-1-thread-3
pool-1-thread-2