当看到以下形式的代码时:
new Thread(runnable).start();时,如果希望用一种更灵活的执行策略,例如
- 什么时候执行
- 按照什么顺序执行(FIFO, LIFO, 优先级)等
- 多少个任务并发执行
- 一个任务执行前或后,应该进行什么操作。
这时可考虑使用Executor代替Thread.start();
public class TaskExecutionWebServer {
private static final int NTHREADS = 100;
private static final Executor exec
= Executors.newFixedThreadPool(NTHREADS);
public static void main(String[] args) throws IOException {
ServerSocket socket = new ServerSocket(80);
while (true) {
final Socket connection = socket.accept();
Runnable task = new Runnable() {
public void run() {
handleRequest(connection);
}
};
exec.execute(task);
}
}
}
具体说明可见
http://blog.csdn.net/linghu_java/article/details/17123057
http://www.iteye.com/topic/366591