使用Executor时,加了for和不加for什么区别

原创
2016/04/06 10:16
阅读数 146

摘要

使用Executor时,加了for和不加for什么区别

具体描述

这段代码

private void multiThread(Queue q){
    ExecutorService exec = Executors.newFixedThreadPool(5);
    for(int i=0;i<5;i++) {
        exec.execute(new TaskJob(q));
    }
    exec.shutdown();
}

Thread.currentThread()方法打印出进程号,出现以下区别

没用for循环

Thread[pool-1-thread-1,5,main] Thread[pool-2-thread-1,5,main]

用for循环

Thread[pool-1-thread-1,5,main] Thread[pool-1-thread-2,5,main]

总结

即加了for表示为同一个线程池中的线程依次执行Task任务; 如果不加,会再开辟新的线程池,那之前创建线程池,并在线程池中分配线程资源也就没有意义了。


展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部