ExecutorService

Java提供四种线程池

  • newCachedThreadPool

创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

  • newFixedThreadPool

创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

  • newScheduledThreadPool

创建一个定长线程池,支持定时及周期性任务执行。

  • newSingleThreadExecutor

创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

线程池执行顺序

Java代码

void contextLoads() {
        for (int i = 0; i < 100; i++) {
            System.out.println("这是第一个输出语句,现在是第"+i+"遍循环");
        }
        ExecutorServiceUtils.submit(()-> {
            for (int i = 0; i < 100; i++) {
                System.out.println("这是executor中的for循环,现在是第"+i+"遍");
            }
        });
        for (int i = 0; i < 100; i++) {
            System.out.println("现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第"+i+"遍循环");
        }
    }

控制台输出

这是第一个输出语句,现在是第0遍循环
这是第一个输出语句,现在是第1遍循环
这是第一个输出语句,现在是第2遍循环
这是第一个输出语句,现在是第3遍循环
这是第一个输出语句,现在是第4遍循环
这是第一个输出语句,现在是第5遍循环
这是第一个输出语句,现在是第6遍循环
这是第一个输出语句,现在是第7遍循环
这是第一个输出语句,现在是第8遍循环
这是第一个输出语句,现在是第9遍循环
这是第一个输出语句,现在是第10遍循环
这是第一个输出语句,现在是第11遍循环
这是第一个输出语句,现在是第12遍循环
这是第一个输出语句,现在是第13遍循环
这是第一个输出语句,现在是第14遍循环
这是第一个输出语句,现在是第15遍循环
这是第一个输出语句,现在是第16遍循环
这是第一个输出语句,现在是第17遍循环
这是第一个输出语句,现在是第18遍循环
这是第一个输出语句,现在是第19遍循环
这是第一个输出语句,现在是第20遍循环
这是第一个输出语句,现在是第21遍循环
这是第一个输出语句,现在是第22遍循环
这是第一个输出语句,现在是第23遍循环
这是第一个输出语句,现在是第24遍循环
这是第一个输出语句,现在是第25遍循环
这是第一个输出语句,现在是第26遍循环
这是第一个输出语句,现在是第27遍循环
这是第一个输出语句,现在是第28遍循环
这是第一个输出语句,现在是第29遍循环
这是第一个输出语句,现在是第30遍循环
这是第一个输出语句,现在是第31遍循环
这是第一个输出语句,现在是第32遍循环
这是第一个输出语句,现在是第33遍循环
这是第一个输出语句,现在是第34遍循环
这是第一个输出语句,现在是第35遍循环
这是第一个输出语句,现在是第36遍循环
这是第一个输出语句,现在是第37遍循环
这是第一个输出语句,现在是第38遍循环
这是第一个输出语句,现在是第39遍循环
这是第一个输出语句,现在是第40遍循环
这是第一个输出语句,现在是第41遍循环
这是第一个输出语句,现在是第42遍循环
这是第一个输出语句,现在是第43遍循环
这是第一个输出语句,现在是第44遍循环
这是第一个输出语句,现在是第45遍循环
这是第一个输出语句,现在是第46遍循环
这是第一个输出语句,现在是第47遍循环
这是第一个输出语句,现在是第48遍循环
这是第一个输出语句,现在是第49遍循环
这是第一个输出语句,现在是第50遍循环
这是第一个输出语句,现在是第51遍循环
这是第一个输出语句,现在是第52遍循环
这是第一个输出语句,现在是第53遍循环
这是第一个输出语句,现在是第54遍循环
这是第一个输出语句,现在是第55遍循环
这是第一个输出语句,现在是第56遍循环
这是第一个输出语句,现在是第57遍循环
这是第一个输出语句,现在是第58遍循环
这是第一个输出语句,现在是第59遍循环
这是第一个输出语句,现在是第60遍循环
这是第一个输出语句,现在是第61遍循环
这是第一个输出语句,现在是第62遍循环
这是第一个输出语句,现在是第63遍循环
这是第一个输出语句,现在是第64遍循环
这是第一个输出语句,现在是第65遍循环
这是第一个输出语句,现在是第66遍循环
这是第一个输出语句,现在是第67遍循环
这是第一个输出语句,现在是第68遍循环
这是第一个输出语句,现在是第69遍循环
这是第一个输出语句,现在是第70遍循环
这是第一个输出语句,现在是第71遍循环
这是第一个输出语句,现在是第72遍循环
这是第一个输出语句,现在是第73遍循环
这是第一个输出语句,现在是第74遍循环
这是第一个输出语句,现在是第75遍循环
这是第一个输出语句,现在是第76遍循环
这是第一个输出语句,现在是第77遍循环
这是第一个输出语句,现在是第78遍循环
这是第一个输出语句,现在是第79遍循环
这是第一个输出语句,现在是第80遍循环
这是第一个输出语句,现在是第81遍循环
这是第一个输出语句,现在是第82遍循环
这是第一个输出语句,现在是第83遍循环
这是第一个输出语句,现在是第84遍循环
这是第一个输出语句,现在是第85遍循环
这是第一个输出语句,现在是第86遍循环
这是第一个输出语句,现在是第87遍循环
这是第一个输出语句,现在是第88遍循环
这是第一个输出语句,现在是第89遍循环
这是第一个输出语句,现在是第90遍循环
这是第一个输出语句,现在是第91遍循环
这是第一个输出语句,现在是第92遍循环
这是第一个输出语句,现在是第93遍循环
这是第一个输出语句,现在是第94遍循环
这是第一个输出语句,现在是第95遍循环
这是第一个输出语句,现在是第96遍循环
这是第一个输出语句,现在是第97遍循环
这是第一个输出语句,现在是第98遍循环
这是第一个输出语句,现在是第99遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第0遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第1遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第2遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第3遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第4遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第5遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第6遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第7遍循环
这是executor中的for循环,现在是第0遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第8遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第9遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第10遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第11遍循环
这是executor中的for循环,现在是第1遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第12遍循环
这是executor中的for循环,现在是第2遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第13遍循环
这是executor中的for循环,现在是第3遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第14遍循环
这是executor中的for循环,现在是第4遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第15遍循环
这是executor中的for循环,现在是第5遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第16遍循环
这是executor中的for循环,现在是第6遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第17遍循环
这是executor中的for循环,现在是第7遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第18遍循环
这是executor中的for循环,现在是第8遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第19遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第20遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第21遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第22遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第23遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第24遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第25遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第26遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第27遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第28遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第29遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第30遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第31遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第32遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第33遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第34遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第35遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第36遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第37遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第38遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第39遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第40遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第41遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第42遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第43遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第44遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第45遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第46遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第47遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第48遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第49遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第50遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第51遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第52遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第53遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第54遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第55遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第56遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第57遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第58遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第59遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第60遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第61遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第62遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第63遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第64遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第65遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第66遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第67遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第68遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第69遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第70遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第71遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第72遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第73遍循环
这是executor中的for循环,现在是第9遍
这是executor中的for循环,现在是第10遍
这是executor中的for循环,现在是第11遍
这是executor中的for循环,现在是第12遍
这是executor中的for循环,现在是第13遍
这是executor中的for循环,现在是第14遍
这是executor中的for循环,现在是第15遍
这是executor中的for循环,现在是第16遍
这是executor中的for循环,现在是第17遍
这是executor中的for循环,现在是第18遍
这是executor中的for循环,现在是第19遍
这是executor中的for循环,现在是第20遍
这是executor中的for循环,现在是第21遍
这是executor中的for循环,现在是第22遍
这是executor中的for循环,现在是第23遍
这是executor中的for循环,现在是第24遍
这是executor中的for循环,现在是第25遍
这是executor中的for循环,现在是第26遍
这是executor中的for循环,现在是第27遍
这是executor中的for循环,现在是第28遍
这是executor中的for循环,现在是第29遍
这是executor中的for循环,现在是第30遍
这是executor中的for循环,现在是第31遍
这是executor中的for循环,现在是第32遍
这是executor中的for循环,现在是第33遍
这是executor中的for循环,现在是第34遍
这是executor中的for循环,现在是第35遍
这是executor中的for循环,现在是第36遍
这是executor中的for循环,现在是第37遍
这是executor中的for循环,现在是第38遍
这是executor中的for循环,现在是第39遍
这是executor中的for循环,现在是第40遍
这是executor中的for循环,现在是第41遍
这是executor中的for循环,现在是第42遍
这是executor中的for循环,现在是第43遍
这是executor中的for循环,现在是第44遍
这是executor中的for循环,现在是第45遍
这是executor中的for循环,现在是第46遍
这是executor中的for循环,现在是第47遍
这是executor中的for循环,现在是第48遍
这是executor中的for循环,现在是第49遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第74遍循环
这是executor中的for循环,现在是第50遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第75遍循环
这是executor中的for循环,现在是第51遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第76遍循环
这是executor中的for循环,现在是第52遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第77遍循环
这是executor中的for循环,现在是第53遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第78遍循环
这是executor中的for循环,现在是第54遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第79遍循环
这是executor中的for循环,现在是第55遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第80遍循环
这是executor中的for循环,现在是第56遍
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第81遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第82遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第83遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第84遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第85遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第86遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第87遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第88遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第89遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第90遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第91遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第92遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第93遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第94遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第95遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第96遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第97遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第98遍循环
现在测试是否等线程执行完再执行本句,这是最后一个输出语句,现在是第99遍循环
这是executor中的for循环,现在是第57遍
这是executor中的for循环,现在是第58遍
这是executor中的for循环,现在是第59遍
这是executor中的for循环,现在是第60遍
这是executor中的for循环,现在是第61遍
这是executor中的for循环,现在是第62遍
这是executor中的for循环,现在是第63遍
这是executor中的for循环,现在是第64遍
这是executor中的for循环,现在是第65遍
这是executor中的for循环,现在是第66遍
这是executor中的for循环,现在是第67遍
这是executor中的for循环,现在是第68遍
这是executor中的for循环,现在是第69遍
这是executor中的for循环,现在是第70遍
这是executor中的for循环,现在是第71遍
这是executor中的for循环,现在是第72遍
这是executor中的for循环,现在是第73遍
这是executor中的for循环,现在是第74遍
这是executor中的for循环,现在是第75遍
这是executor中的for循环,现在是第76遍
这是executor中的for循环,现在是第77遍
这是executor中的for循环,现在是第78遍
这是executor中的for循环,现在是第79遍
这是executor中的for循环,现在是第80遍
这是executor中的for循环,现在是第81遍
这是executor中的for循环,现在是第82遍
这是executor中的for循环,现在是第83遍
这是executor中的for循环,现在是第84遍
这是executor中的for循环,现在是第85遍
这是executor中的for循环,现在是第86遍
这是executor中的for循环,现在是第87遍
这是executor中的for循环,现在是第88遍
这是executor中的for循环,现在是第89遍
这是executor中的for循环,现在是第90遍
这是executor中的for循环,现在是第91遍
这是executor中的for循环,现在是第92遍
这是executor中的for循环,现在是第93遍
这是executor中的for循环,现在是第94遍
这是executor中的for循环,现在是第95遍
这是executor中的for循环,现在是第96遍
这是executor中的for循环,现在是第97遍
这是executor中的for循环,现在是第98遍
这是executor中的for循环,现在是第99遍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

skye111321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值