Google搜索“图片”的时候,会加载大量的图片,
如果把每一张图片看作一个线程的话,一瞬间会产生大量的线程,当图片加载完之后,大量线程就会被销毁,这样会增加系统的开销,降低系统的性能。线程池的出现,为了有效的重复利用线程。
ThreadPoolTest.java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolTest {
public static void main(String[] args) {
ExecutorService pool = Executors.newFixedThreadPool(2); // 返回ExecutorService接口对象
pool.submit(new MyRunnable());
pool.submit(new MyRunnable());
pool.submit(new MyRunnable());
pool.submit(new MyRunnable());
pool.submit(new MyRunnable());
// 结束线程池
pool.shutdown();
}
}
MyRunnable.java
public class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 1; i <= 100; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
注:newFixedThreadPool()返回一个包含指定数目线程数的线程池,如果任务数量多于线程数目的话,那么没有执行的任务必须等待,直到任务完成为止。
void | shutdown() 启动一次顺序关闭,执行以前提交的任务,但不接受新任务。 |