Executors工厂类用来产生连接池,该工厂类里包含几个静态工厂方法创建连接池: newCachedThreadPool();创建一个具有缓存功能的线程池,系统根据需要创建线程, 这些线程将会被缓存在线程池中。 newFixedThreadPool(int n);创建一个可重用的具有固定线程数的线程池。 newSingleThreadExecutor();创建一个只有单线程的线程池,相当于 newFixedThreadPool(1); newScheduledThreadPool(int n);创建具有指定线程数的线程池,它可以 在指定延迟后执行线程任务,。 newSingleThreadScheduledExecutor();创建一个只有一条线程的线程池, 它可以在指定延迟后执行线程任务。 上面五个方法中前三个方法返回一个ExecutorService对象,该对象代表一个线程池, 它可以执行Runnable对象或Callable对象所代表的线程,而后两个方法返回一个 ScheduledExecutorService线程池,它是ExecutorService的子类 它可以在指定延迟后执行线程任务。 ExecutorService里面提供了如下三个方法: submit(Runnable t):将一个Runnable对象提交给指定的线程池。线程池将在有空闲线程时执行 Runnable对象代表的任务。 submit(Runnable t,T r);将一个Runnable对象交给指定的线程池。 线程池将在有空闲线程时执行Runnable对象所代表的任务,r显式 指定线程执行结束后的返回值。 submit(Callable t);将一个Callable对象交给指定的线程池。线程池将在有空闲线程时执行Callable对象所代表的任务 ScheduledExecutorService代表可在指定延迟或周期行执行 线程任务的线程池。它提供几个方法如下: schedule(Callable c,long delay,TimeUnit u); 指定c任务将在delay延迟后执行。u是时间的单位。 schedule(Runnable r,long delay,TimeUnit u); 指定r任务将在delay延迟后执行。 scheduleAtFixedRate(Runnable r,long initialDelay ,long period,TimeUnit u); r任务将在delay延迟后执行,而且以设定频率重复执行。也就是说。在initialDelay后 开始执行,依次在initialDelay+period、initialDelay+2*period...处重复执行。 scheduleWithFixedDelay(Runnable r,long initialDelay ,long period,TimeUnit u); 创建并执行一个在给定初始延迟后首次启用的定期操作。如果任务的任一次执行时 遇到异常,就会取消后续的执行。否则只能通过程序显式取消或终止该任务。 其他的你可以看看API学习。 |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |