线程池

Posted bbbbbbbb1og

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池相关的知识,希望对你有一定的参考价值。

Executors(线程池)

(jdk1.5特性)
  jdk1.5之前,我们必须要手动实现自己的线程池,jdk1.5之后,Java内置支持线程池
? 线程池的优点
  线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。
? 和线程池相关的类和方法
  Executors工厂类(用于产生线程池):
    public static ExecutorService newCachedThreadPool()
    public static ExecutorService newFixedThreadPool(int nThreads)
    创建一个线程池对象,并控制要创建几个线程对象
    public static ExecutorService newSingleThreadExecutor()
    创建一个线 程池对象,并只有一个线程对象
  ExecutorService接口(用于执行Runnable对象或者Callable对象代表的线程):
    Future<?> submit(Runnable task)        执行Runnable对象代表的线程
    <T> Future<T> submit(Callable<T> task)    执行Callable对象代表的线程
    void shutdown()                启动一次顺序关闭,执行以前提交的任务,但不接受新任务
  Callable<V>接口(第三种创建线程的方式,依赖于线程池使用,这里指定的泛型是call()方法的返回值类型)
    V call() throws Exception 计算结果并返回,类似于带返回值、可以抛异常run()方法
  Future接口(泛型接口,表示异步计算的结果,这里指定的泛型与 Callable 中的泛型一致)
    V get() 返回计算的结果,需要用引用类型接收
? 示例代码:
  // 创建一个线程池对象,控制要创建几个线程对象
    ExecutorService pool = Executors.newFixedThreadPool(2);
  // 可以执行Runnable对象或者Callable对象代表的线程
    pool.submit(new MyRunnable());
    pool.submit(new MyRunnable());
  //结束线程池
    pool.shutdown();



























以上是关于线程池的主要内容,如果未能解决你的问题,请参考以下文章

什么叫线程池?线程池如何使用?

多线程(六):线程池

多线程(六):线程池

十五、线程池(六)自动创建线程池的弊端

java 如何获得线程池中正在执行的线程数?

线程池参数与线程池调优