java并发库学习

package com.wangbiao.thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/**
 * @author wangbiao
 * @date and time Jun 18, 2014 3:16:12 PM
 * 
 */
public class ThreadPoolStudy {

    public static void main(String[] args) {

        // create thread pool

        /*
         * Executors.newFixedThreadPool(3);
         * 
         * 在任意点,在大多数 nThreads 线程会处于处理任务的活动状态。
         * 若是在全部线程处于活动状态时提交附加任务,则在有可用线程以前,附加任务将在队列中等待。
         * 若是在关闭前的执行期间因为失败而致使任何线程终止,那么一个新线程将代替它执行后续的任务(若是须要)。
         * 在某个线程被显式地关闭以前,池中的线程将一直存在。
         */

        // ExecutorService threadPool = Executors.newFixedThreadPool(3);

        /*
         * 
         * Executors.newCachedThreadPool();
         * 
         * 建立一个可根据须要建立新线程的线程池,可是在之前构造的线程可用时将重用它们。
         * 对于执行不少短时间异步任务的程序而言,这些线程池一般可提升程序性能。 调用 execute 将重用之前构造的线程(若是线程可用)。
         * 若是现有线程没有可用的,则建立一个新线程并添加到池中。 终止并从缓存中移除那些已有 60 秒钟未被使用的线程。
         * 所以,长时间保持空闲的线程池不会使用任何资源。 注意,可使用 ThreadPoolExecutor
         * 构造方法建立具备相似属性但细节不一样(例如超时参数)的线程池。
         */
        // ExecutorService threadPool = Executors.newCachedThreadPool();

        /*
         * Executors.newSingleThreadExecutor();
         * 
         * 建立一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
         * (注意,若是由于在关闭前的执行期间出现失败而终止了此单个线程,那么若是须要,一个新线程将代替它执行后续的任务)。
         * 可保证顺序地执行各个任务,而且在任意给定的时间不会有多个线程是活动的。 与其余等效的 newFixedThreadPool(1)
         * 不一样,可保证无需从新配置此方法所返回的执行程序便可使用其余的线程
         */

        ExecutorService threadPool = Executors.newSingleThreadExecutor();

        for (int i = 0; i <= 10; i++) {// excute 10 thread

            final int task = i;
            threadPool.execute(new Runnable() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    for (int j = 0; j <= 10; j++) {
                        System.out.println(Thread.currentThread().getName()
                                + "-" + "is loop of " + j + "-" + "is thread "
                                + task);
                    }
                }
            });
        }

        // threadPool.shutdownNow();//试图中止全部正在执行的活动任务,暂停处理正在等待的任务,并返回等待执行的任务列表。
        threadPool.shutdown();// 启动一次顺序关闭,执行之前提交的任务,但不接受新任务。

        // execute will be delay 10 seconds
        /*
         * Executors.newScheduledThreadPool(3).schedule(new Runnable() {
         * 
         * @Override public void run() { // TODO Auto-generated method stub
         * System.out.println("begin to work"); } }, 10, TimeUnit.SECONDS);
         */

        // execute will be delay 10 seconds, 2 seconds one execution
        Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                System.out.println("begin to work");
            }
        }, 10, 2, TimeUnit.SECONDS);

    }
}
相关文章
相关标签/搜索