正在加载……
专注、离线、切勿分心
线程池概述
█ 线程池的优点
    ☞ 启动一个新线程的成本是比较高的,因为它涉及到与操作系统进行交互。这种情况下使用线程池可以更好的提高性能,尤其在当前程序需要创建大量的生存周期很短的线程时,更应该考虑使用线程池。(每次都new Thread() 需要耗费系统资源和开销,利用线程池就省去了多余的创建和销毁的步骤)
█ 原理
    ☞ 线程池里每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一次被使用。
Java 从JDK5之后开始支持线程池

█ JDK5提供了一Executors来产生线程池,有如下方法:
public static ExecutorService newCachedThreadPool();
public static ExecutorService newFixedThreadPool(int nThreads);
public static ExecutorService newSingleThreadExecutor();
█ 以上方法返回了一个ExecutorService ,该对象表示一个线程池,它可以执行Runable对象代表的线程。它提供了如下方法:
 submit(Runnable task);

TestMain.java
package com.java.threadpool;

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

public class TestMain {

        public static void main(String[] args) {
                ExecutorService threadPool = Executors.newCachedThreadPool();
                MyTask task1=new MyTask();
                threadPool.submit(task1); 
 //线程池会在池子里找个空闲线程执你的runable接口内的run方法。
                //threadPool.shutdown();  //启动一次顺序关闭,执行以前提交的任务,但不接受新任务。注释完这局话程序不会关闭,会一直开启等待新的任务;有了这句代码,当刚才的线程执行完毕线程就会退出
        }
}

class MyTask implements Runnable{
        public void run(){
                for(int i=0;i<=100;i++){
                        System.out.println("MyTask.run()"+i);
                }
        }
}
  
//有shutdown
posted on 2018-06-14 10:19  正在加载……  阅读(218)  评论(0编辑  收藏  举报