java 線程池

Executors  Executor 區別:java

Executor  是一個接口ide

Executors   是一個類,初始化不一樣的線程池this

ExecutorService 繼承 Executor   即接口繼承接口, 添加了不少額外的方法,好比中止一個線程池spa

線程池的種類:
線程

1. newFixedThreadPool(int nThreads)  缺點固定數量的線程池,有可能浪費飛、多餘的資源code

2. newCachedThreadPool 根據任務的能力啓動線程池的數量,啓動的線程過大,會壓死機器繼承

3. newScheduledThreadPool相似於timer接口

4. newSingleThreadScheduledExecutor 一個固定大小的線程池隊列


newCachedThreadPool  缺點說明
/*
重運行結果上看,當線程數是10000 的時候,i 的值都會輸出,可是當 i 的最大值是20000 的時候機器就會卡死
說明:
newCachedThreadPool  內部沒有線程隊列的,來多少任務,啓動多少個線程
*/
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class CachePoll {
	
	
	public static class C1 implements Runnable{
		int i =0;
		public C1(int i){ this.i = i ;}
		@Override
		public void run() {
			System.out.println(i);
			while(true){
				
				try {
					Thread.sleep(10);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
		}
		
	} 
	
	public static void main(String[] args) {
		ExecutorService es = Executors.newCachedThreadPool();
		for(int i=0; i < 20000; i++){
			es.execute(new C1(i));
		}
		
	}

}
相關文章
相關標籤/搜索