天天看点

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

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}能够对线程进行简单的管理并提供定时执行、间隔执行等功能。