应用Executor实现的WebServer
使用Executor实现的WebServer
1.通过使用Executor将处理请求任务的提交与它的执行体进行解耦。
eg:
注意:
无论何时当你看到这种形式的代码:
并且你可能最终希望获得一个更加灵活的执行策略时,请认真考虑使用Executor代替Thread。
1.通过使用Executor将处理请求任务的提交与它的执行体进行解耦。
eg:
import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.Executor; import java.util.concurrent.Executors; /** * 用Executor创建数量为100的线程池来构建简易的WebServer * @author yale * */ public class TaskExecutionWebServer { private static final int THREAD_NUM = 100;// 定义线程池中线程数量 private static final Executor exec = Executors.newFixedThreadPool(THREAD_NUM); public static void main(String[] args) throws Exception { ServerSocket socket = new ServerSocket(80); while(true) { final Socket connection = socket.accept(); Runnable task = new Runnable(){ public void run() { //handelRequest(connection); } }; exec.execute(task); } } }
注意:
无论何时当你看到这种形式的代码:
new Thread(runnable).start();
并且你可能最终希望获得一个更加灵活的执行策略时,请认真考虑使用Executor代替Thread。