天天看点

java线程池

  在java线程中我们学习了如何通过实现java.lang.Runnable来定义实现任务类。以及用下边这样的语句来常见一个线程。

  Runnable task = new TaskClass(task);

  new Thread(task).start();

  这样的方法对于单一的任务执行是很方便的,但是由于我们必须对每个人物都创建一个线程当有大量的任务时就不够高效了。

  线程池是管理并发执行任务个数的理想方法。java提供Executor接口来执行线程池中的任务,提供ExecutorService接口来管理和控制任务。ExecutorService是Executor的子接口。

  《interface》 java.util.concurrent.Executor

    +executor(Runnable object):void      //Executor the runnable task

  《interface》 java.util.concurrent.ExecutorService

    +shutdown() :void         //关闭执行器,但允许完成执行器中的任务。一旦关闭,他就不能接受新任务。

    +shutdownNow() :bList<Runnable>  //即使线程中还有未完成的任务也会直接关闭线程

    +isShutdown()  :boolean   //如果线程已经关闭,则返回true

    +isTerminated():boolean  //如果线程池中所有的任务已经终止,返回true

   java.util.concurrent.Executors

    +newFixedThreadPool(numberiofthreads:int):ExecutorService    //创建一个线程池,该线程池可以并发执行的线程数固定。在线程结束当前任务后,可以重用另一个任务

    +newCachedThreadPool():ExecutorService     //创建一个线程池,它可按照需要创建新的线程,但当前边创建的线程可用的时候重用他们