package cn.itcast_08;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/*
* 線程池的好處:線程池裡的每一個線程代碼結束後,并不會死亡,而是再次回到線程池中成為空閑狀态,等待下一個對象來使用。
*
* 如何實作線程池的代碼呢?
* A:建立一個線程池對象,控制要建立幾個線程對象。
* public static ExecutorService newFixedThreadPool(int nThreads)
* B:這種線程池的線程可以執行:
* 可以執行Runnable對象或者Callable對象代表的線程
* 做一個類實作Runnable接口。
* C:調用如下方法即可
* Future<?> submit(Runnable task)
* <T> Future<T> submit(Callable<T> task)
* D:我就要結束,可以嗎?
* 可以。
*/
public class ExecutorsDemo {
public static void main(String[] args) {
// 建立一個線程池對象,控制要建立幾個線程對象。
// public static ExecutorService newFixedThreadPool(int nThreads)
ExecutorService pool = Executors.newFixedThreadPool(2);
// 可以執行Runnable對象或者Callable對象代表的線程
pool.submit(new MyRunnable());
pool.submit(new MyRunnable());
// 結束線程池
pool.shutdown();
}
}
package cn.itcast_08;
public class MyRunnable implements Runnable {
@Override
public void run() {
for (int x = 0; x < 100; x++) {
System.out.println(Thread.currentThread().getName() + ":" + x);
}
}
}
線程池的優點
1)避免線程的建立和銷毀帶來的性能開銷。
2)避免大量的線程間因互相搶占系統資源導緻的阻塞現象。
3}能夠對線程進行簡單的管理并提供定時執行、間隔執行等功能。