老师,两个问题咨询

来源:3-3 其他观点

manong22

2019-10-11

一 为啥我的线程只创建了600多,您视频中是1000

二 线程池和定时器后面还会讲吗  他们的用法我不太懂http://img.mukewang.com/szimg/5d9fe47e09e7030d05140411.jpghttp://img1.sycdn.imooc.com/szimg/5d9fe488095f811b10670257.jpg

写回答

2回答

悟空

2019-10-11

你到600多就停止了吗?把代码贴一下文字版,我运行试一下。应该是for循环几次就会有几次的。

线程池等内容我已经准备完毕,正在录制中,在下一门课中,会对约二十种常见的并发工具类进行深入讲解,其中就包含线程池和JUC中各种常用的类,相应的Java并发工具类图鉴和大纲可以看本篇手记里面的思维导图: http://www.imooc.com/article/290027 

本门课的内容包括【多线程核心基础+Java内存模型+死锁的发生和解除】,可以为后续并发工具类的学习打下坚实基础。

1
2
悟空
回复
幕布斯2458602
哈哈,不会让你失望的,正在录制中。
2019-10-11
共2条回复

manong22

提问者

2019-10-11

public class ThreadPool5 {

   public static void main(String[] args){
       ExecutorService executorService = Executors.newCachedThreadPool();
       for(int i = 0 ; i < 1000; i++){
           executorService.submit(new Task() {});
           };
       }
   }

   class Task implements Runnable {
       @Override
       public void run() {
           try {
               Thread.sleep(100);
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
           System.out.println(Thread.currentThread().getName());
       }
   }

0
1
悟空
这里的600多,不是执行任务的次数,而是线程的数量。线程池的线程是可以复用的,当线程1执行完之后,后面会重新启用它执行新任务,所以就不需要到1000的。线程数量和任务执行次数是两个概念。
2019-10-11
共1条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程