如果为每个任务都创建一个线程,在大量的任务的时候就不够高效。线程池是管理并发执行任务个数的理想方法。线程池用Executor来表示。用ExecutorService的方法来管理和控制任务。为了创建Executor对象,要使用Executors这个工具类。示例:
package it.cast.threadtest;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ThreadPoolDemo {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(3);
executor.execute(new PrintChar('a', 10));
executor.execute(new PrintChar('b', 10));
executor.execute(new PrintChar('c', 10));
executor.execute(new PrintChar('d', 10));
executor.shutdown();
ScheduledExecutorService eService = Executors.newScheduledThreadPool(1);
eService.scheduleAtFixedRate(new PrintChar('e', 10), 0, 2, TimeUnit.SECONDS);
}
}
class PrintChar implements Runnable{
private char c;
private int num;
public PrintChar(char c, int num) {
// TODO Auto-generated constructor stub
this.c = c;
this.num = num;
}
@Override
public void run() {
for (int i = 0; i < num; i++) {
System.out.println(i + " : " + c);
}
}
}