執行緒池實現執行緒的建立 的兩種方法
package cn.itcast.demo5;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/*
- JDK1.5新特性,實現執行緒池程式
- 使用工廠類 Executors中的靜態方法建立執行緒物件,指定執行緒的個數
- static ExecutorService newFixedThreadPool(int 個數) 返回執行緒池物件
- 返回的是ExecutorService介面的實現類 (執行緒池物件)
- 介面實現類物件,呼叫方法submit (Ruunable r) 提交執行緒執行任務
*/
public class ThreadPoolDemo {
public static void main(String[] args) {
//呼叫工廠類的靜態方法,建立執行緒池物件
//返回執行緒池物件,是返回的介面
ExecutorService es = Executors.newFixedThreadPool(2);
//呼叫介面實現類物件es中的方法submit提交執行緒任務
//將Runnable介面實現類物件,傳遞
es.submit(new ThreadPoolRunnable());
es.submit(new ThreadPoolRunnable());
es.submit(new ThreadPoolRunnable());
}
}
//第一種方法,實現介面Runable,重寫run方法
package cn.itcast.demo5;
public class ThreadPoolRunnable implements Runnable {
public void run(){
System.out.println(Thread.currentThread().getName()+" 執行緒提交任務");
}
}
-
*二**
package cn.itcast.demo5;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/*
- 實現執行緒程式的第三個方式,實現Callable介面方式
- 實現步驟
- 工廠類 Executors靜態方法newFixedThreadPool方法,建立執行緒池物件
- 執行緒池物件ExecutorService介面實現類,呼叫方法submit提交執行緒任務
- submit(Callable c)
*/
public class ThreadPoolDemo1 {
public static void main(String[] args)throws Exception {
ExecutorService es = Executors.newFixedThreadPool(2);
//提交執行緒任務的方法submit方法返回 Future介面的實現類
Future f = es.submit(new ThreadPoolCallable());
String s = f.get();
System.out.println(s);
}
}
第三種 * Callable 介面的實現類,作為執行緒提交任務出現
package cn.itcast.demo5;
/
- Callable 介面的實現類,作為執行緒提交任務出現
- 使用方法返回值
*/
import java.util.concurrent.Callable;
public class ThreadPoolCallable implements Callable{
public String call(){
return “abc”;
}
}
**