線程併發
- 串行的執行任務
- 顯示地爲任務創建線程
- 使用Executor框架
/**
*
*
Title: TaskExecutionWebServer
*
Description:
* 1、單線程的串行執行 缺點:糟糕的響應和較低的吞吐量
* 2、將每個任務放在各自的線程中執行 缺點:線程的管理的複雜性
* 3、將每個任務提交到Executor即線程池中執行 可以克服線程管理的複雜性,而是有線程池代爲管理
* 同樣也可以將任務的提交和任務的執行分開來,實現解耦合
* 注意:每當看到new Thread(runnable).start()時,請考慮使用Executor來代替Thread
*
* @date: 2016年7月30日下午9:46:17
* @author: ysl
* @version 1.0
*/
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() {
@Override
public void run() {
//處理請求
//handleRequest(connection);
}
};
exec.execute(task);
}
}
}