java線程池實例

線程池的作用:

     線程池作用就是限制系統中執行線程的數量。
     根據系統的環境情況,可以自動或手動設置線程數量,達到運行的最佳效果;少了浪費了系統資源,多了造成系統擁擠效率不高。用線程池控制線程數量,其他線程排隊等候。一個任務執行完畢,再從隊列的中取最前面的任務開始執行。若隊列中沒有等待進程,線程池的這一資源處於等待。當一個新任務需要運行時,如果線程池中有等待的工作線程,就可以開始運行了;否則進入等待隊列。

 

爲什麼要用線程池:

  1. 減少了創建和銷燬線程的次數,每個工作線程都可以被重複利用,可執行多個任務
  2. 可以根據系統的承受能力,調整線程池中工作線線程的數目,防止因爲因爲消耗過多的內存,而把服務器累趴下(每個線程需要大約1MB內存,線程開的越多,消耗的內存也就越大,最後死機)

線程池類

   

import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadTest {
	private static ExecutorService executor = Executors.newFixedThreadPool(5);
	private static Task task;
	public static void main(String[] args) {
		ThreadTest test=new ThreadTest();
		int ThreadNum=0;
		while(true){
			ThreadNum++;
			test.start(ThreadNum);
		}
	}
	private void start(final int ThreadNum)
	{
		task = new Task(ThreadNum);
		executor.execute(task);
	}
}
class Task extends Thread
{
	private int ThreadNum;
	Task(int temp)
	{
		ThreadNum=temp;
	}
	public void run() {
		System.out.println("當前執行了:"+ThreadNum);
		try {
			Random random=new Random();
			int sleep=random.nextInt(8)+2;
			System.out.println(ThreadNum+">>停止"+sleep+"秒");
			Thread.sleep(sleep*1000);
		} catch (InterruptedException e) {
			System.out.println("執行過程中出現縣城暫停異常"+e);
		}
		System.out.println(ThreadNum+">>執行完成");
		System.gc();
	}
}


執行結果如下:

當前執行了:2
當前執行了:3
當前執行了:1
2>>停止4秒
3>>停止8秒
1>>停止4秒
當前執行了:4
當前執行了:5
5>>停止3秒
4>>停止4秒
5>>執行完成
1>>執行完成
2>>執行完成
當前執行了:6
6>>停止9秒
當前執行了:8
8>>停止6秒
4>>執行完成
當前執行了:7
7>>停止7秒
當前執行了:9
9>>停止9秒


-----------------------------------程序員 閆帆原創---------------------------------------

轉載請註明原創人信息  程序員 閆帆yanfanvip


發佈了49 篇原創文章 · 獲贊 21 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章