1.线程池产生的背景
web服务,数据库访问等都需要处理大量的请求线程,如果每次都为每个请求创建新的线程,任务完成销毁线程,对于服务器来说,创建和销毁线程对资源的消耗都是比较大的。所以为了防止资源浪费,必须得对线程进行管理。线程池就是管理线程的高级技术。
2.线程池的功能
2.1通过对线程的管理,更合理高效的使用资源。
2.2通过对线程池的维护,可以节省创建线程的开销。
3.线程池的使用
package se.thread; import java.util.Random; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TreadPoolTest extends Thread { public static void main(String[] args) { TreadPoolTest treadPoolTest = new TreadPoolTest(); treadPoolTest.start(); } @Override public void run() { ExecutorService executorService = Executors.newFixedThreadPool(2); for (int i = 0; i < 100; i++) { Runnable runnable = new Runnable() { @Override public void run() { long time = (long)(Math.random()*1000); System.out.println("休息时间:"+time+" ms"); try { Thread.sleep(time); } catch (InterruptedException e) { e.printStackTrace(); } } }; executorService.execute(runnable); } executorService.shutdown(); } }
注意:1.线程池必须使用shutdown显示关闭。
2.在for循环中一般会等待线程池空闲线程,会导致主线程阻塞,所以一般都将for循环放入线程中让其运行。