JAVA线程池

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

/*线程池
* java里面线程池的顶级接口是Executor
* 线程池接口是ExecutorService
* 1.Executo接口:执行提交的Runnable任务对象
* 2.ExecutorService接口:管理终止的方法,以及提供可以追踪一个或者多个异步任务执行状况而生成Future的方法
* 3.Executors类:定义工厂和实用方法
*             1.newSingleThreadExecutor:
*                     创建一个单线程的线程池。串行执行所有线程,次线程池保证所有的线程按次序执行,如果中途发生异常,则由新
*                 的线程替代。
*             2.newFixedThreadPool
*                     创建固定大小的线程池。
*             3.newCachedThreadPool
*                     创建一个可以缓存的线程池。如果线程池的大小超过要处理的任务所需的线程,那么回收空闲线程(60秒不执行)
*                 当任务增加时,该线程池又可以增加新线程来处理任务
*             4.newScheduledThreadPool
*                     创建一个大小无限的线程池。此线程池支持定时以及周期性的执行任务的需求
* */

public class ThreadPoolDemo {
    public static void main(String[] args) {   
        MyThread command = new MyThread();
        //SingleThread(command); //单线程
        //FixedThread(command);  //固定大小线程池
        //CachedThread(command);  //缓存池
        ScheduledThread(command);
    }
   
   
    ////创建一个单线程的线程池,即:newSingleThreadExecutor
    public static void SingleThread(MyThread command){
        //创建一个单线程的线程池,即:newSingleThreadExecutor
        ExecutorService es = Executors.newSingleThreadExecutor();
        //执行线程
        es.execute(command);
    }
   
   
    ////创建一个固定大小的线程池,即:newFixedThreadPool
    private static void FixedThread(MyThread command) {
        ExecutorService executorService = Executors.newFixedThreadPool(3);
        executorService.execute(command);
    }
   
    ////创建一个可以缓存的线程池,即:newCachedThreadPool
    private static void CachedThread(MyThread command) {
        ExecutorService executorService = Executors.newCachedThreadPool();
        executorService.execute(command);
    }
   
   
    ////创建一个大小无限的线程池,即:newScheduledThread
    private static void ScheduledThread(MyThread command) {
        ExecutorService executorService = Executors.newScheduledThreadPool(2);
        executorService.execute(command);
    }
}

 


class MyThread implements Runnable{
    public void run() {
        for (int i = 0; i < 10; i++) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("MyThread"+i);
        }
    }
}

你可能感兴趣的:(JAVA线程池)