b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

forkjoinpool_forkjoinpool 线程数_forkjoinpool 原理

电脑杂谈  发布时间:2017-04-10 15:01:06  来源:网络整理

之前有学习过这个框架的使用,稍微回顾一下:

初始化一个ForkJoinPool

定义task或action

使用pool来执行task或action

这里初始化ForkJoinPool 采用如下方法:

public final static ForkJoinPool mainPool = new ForkJoinPool();

首先分析一下初始化做了些什么。

public ForkJoinPool() {
        this(Runtime.getRuntime().availableProcessors(),
             defaultForkJoinWorkerThreadFactory, null, false);
}

这里调用了另外一个constructor.其中defaultForkJoinWorkerThreadFactory 这个是什么呢?

public static final ForkJoinWorkerThreadFactory
        defaultForkJoinWorkerThreadFactory;

static class DefaultForkJoinWorkerThreadFactory
        implements ForkJoinWorkerThreadFactory {
        public ForkJoinWorkerThread newThread(ForkJoinPool pool) {
            return new ForkJoinWorkerThread(pool);
        }
}

public static intece ForkJoinWorkerThreadFactory {
        /**
         * Returns a new worker thread operating in the given pool.
         *
         * @param pool the pool this thread works in
         * @throws NullPointerException if the pool is null
         */
        public ForkJoinWorkerThread newThread(ForkJoinPool pool);
}

DefaultForkJoinWorkerThreadFactory 是一个静态内部类,其中返回了一个ForkJoinWorkerThread对象。ForkJoinWorkerThreadFactory 是一个intece。仅仅到这里的话,肯定会报错,因为defaultForkJoinWorkerThreadFactory 还没有初始化呢。继续查找代码,这个代码写的真孙子,ForkJoinPool 这个类最下面有一个static block。在这里初始化了一个defaultForkJoinWorkerThreadFactory .

defaultForkJoinWorkerThreadFactory =
            new DefaultForkJoinWorkerThreadFactory();

到这里其实只是初始化了一个ForkJoinWorkerThread,还是要调用defaultForkJoinWorkerThreadFactory.newThread(ForkJoinPool pool)方法才行。forkjoinpool


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-40528-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...