线程池类Executors的运用

来源:互联网 发布:java empty string 编辑:程序博客网 时间:2024/04/28 11:53
public class Test12 {public static void main(String[] args) {//ExecutorService threadPool=Executors.newFixedThreadPool(3);//创建固定的线程个数放入线程池中/*创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。    如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有 60 秒钟未被使用的线程。    因此,长时间保持空闲的线程池不会使用任何资源。 *///ExecutorService threadPool=Executors.newCachedThreadPool();/*创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。(注意,如果因为在关闭前的执行  期间出现失败而终止了此单个线程,那么如果需要,一个新线程将代替它执行后续的任务)。可保证顺序地执行  各个任务,并且在任意给定的时间不会有多个线程是活动的。*/ExecutorService threadPool=Executors.newSingleThreadExecutor();for(int i=0;i<10;i++){final int task=i;threadPool.execute(new Runnable(){public void run(){for(int j=0;j<5;j++){try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+" has loop "+j+" is pool num "+task);}}});}/*启动一次顺序关闭,执行以前提交的任务,但不接受新任务。如果已经关闭,则调用没有其他作用也就是等上面的都执行完成之后会把线程池中的线程销毁回收,否则的话线程池中的线程还存在,程序不会运行终止*///threadPool.shutdown();/*试图停止所有正在执行的活动任务,暂停处理正在等待的任务,并返回等待执行的任务列表。  不会等到上面运行完才停止线程,会立刻停止*///threadPool.shutdownNow();}}

原创粉丝点击