天天看點

多線程_線程池的概述和使用

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}能夠對線程進行簡單的管理并提供定時執行、間隔執行等功能。