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);
}
}
}
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();
}
}