1. 程式人生 > >執行緒池實現執行緒的建立 的兩種方法

執行緒池實現執行緒的建立 的兩種方法

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”;
}
}
**