歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java線程池:ExecutorService,Executors

簡單的Java線程池可以從Executors.newFixedThreadPool( int n)獲得。此方法返回一個線程容量為n的線程池。然後ExecutorService的execute執行之。

現給出一個示例。

package zhangphil.executorservice;

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

public class ZhangPhilExecutorService {

 // 為了容易理解線程池的概念,假設容量只有2的線程池。
 // 實際使用過程中當然可以更多!
 private final int NUMBER = 2;

 public ZhangPhilExecutorService() {
  // 創建容量為2的線程池。
  ExecutorService pool = Executors.newFixedThreadPool(NUMBER);

  for (int i = 0; i < 10; i++) {
   Thread t = new TestThread(i);
   System.out.println("線程池執行線程id:" + i);
   pool.execute(t);
  }

  // 關閉線程池。
  pool.shutdown();
 }

 private class TestThread extends Thread {

  private int id;

  public TestThread(int id) {
   this.id = id;
  }

  @Override
  public void run() {

   System.out.println("線程:" + id + " -> 運行...");

   try {
    Thread.sleep(5000);
   } catch (Exception e) {
    e.printStackTrace();
   }

   System.out.println("線程:" + id + " -> 結束!");
  }
 }

 public static void main(String[] args) {
  new ZhangPhilExecutorService();
 }
}

運行的輸出結果:

線程池執行線程id:0
線程池執行線程id:1
線程池執行線程id:2
線程池執行線程id:3
線程:0 -> 運行...
線程池執行線程id:4
線程:1 -> 運行...
線程池執行線程id:5
線程池執行線程id:6
線程池執行線程id:7
線程池執行線程id:8
線程池執行線程id:9
線程:1 -> 結束!
線程:0 -> 結束!
線程:2 -> 運行...
線程:3 -> 運行...
線程:3 -> 結束!
線程:2 -> 結束!
線程:4 -> 運行...
線程:5 -> 運行...
線程:4 -> 結束!
線程:5 -> 結束!
線程:6 -> 運行...
線程:7 -> 運行...
線程:7 -> 結束!
線程:6 -> 結束!
線程:8 -> 運行...
線程:9 -> 運行...
線程:9 -> 結束!
線程:8 -> 結束!

Copyright © Linux教程網 All Rights Reserved