http://www.chinaitpower.com/A200507/2005-07-24/166973.html digester解析xml
jdk1.5自带线程池的学习
ExecutorService ex=Executors.newCachedThreadPool(); 根据需要无限大容量的线程池
ExecutorService ex=Executors.newFixedThreadPool(int count) 创建固定大小的线程池
ScheduledExecutorService sc=Executors.newScheduledThreadPool(int corePoolSize) 可延迟重复执行的线程池(Timer)
sc.scheduleAtFixedRate(Runnable command, long initialDelay,long period,TimeUnit unit)
initialDelay:初始执行时间:
period:间隔执行时间
unit:间隔时间单位
类ThreadPoolExecutor提供更精确控制的线程池参数,功能更强大。一般构造方法是
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, (示例:new ArrayBlockingQueue<Runnable>(3)) RejectedExecutionHandler handler (示例:new ThreadPoolExecutor.CallerRunsPolicy)
)
用给定的初始参数创建新的 ThreadPoolExecutor。参数: corePoolSize - 池中所保存的线程数,包括空闲线程。 maximumPoolSize - 池中允许的最大线程数。 keepAliveTime - 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。 unit - keepAliveTime 参数的时间单位。 workQueue - 执行前用于保持任务的队列。此队列仅由保持 execute 方法提交的 Runnable 任务。 handler - 由于超出线程范围和队列容量而使执行被阻塞时所使用的处理程序
执行顺序:先创建到初始线程量,不够了放到队列里,再不够启动到最大线程,执行,最后执行队列里的。