[size=large][color=green]1.通过使用Executor将处理请求任务的提交与它的执行体进行解耦。[/color][/size]
eg:
[size=large]
[color=red]
注意:
无论何时当你看到这种形式的代码:[/color][/size]
[size=large][color=red]并且你可能最终希望获得一个更加灵活的执行策略时,请认真考虑使用Executor代替Thread。[/color][/size]
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);
}
}
}
[size=large]
[color=red]
注意:
无论何时当你看到这种形式的代码:[/color][/size]
new Thread(runnable).start();
[size=large][color=red]并且你可能最终希望获得一个更加灵活的执行策略时,请认真考虑使用Executor代替Thread。[/color][/size]