}
运行结果:
倒计时十秒,火箭1等待发射!倒计时十秒,火箭2等待发射!倒计时十秒,火箭3等待发射!倒计时十秒,火箭4等待发射!#0(10) #2(10) #3(10) #1(10) #0(9) #1(9) #3(9) #2(9) #0(8) #2(8) #3(8) #1(8) #0(7) #2(7) #3(7) #1(7) #0(6) #1(6) #2(6) #3(6) #0(5) #3(5) #2(5) #1(5) #0(4) #2(4) #3(4) #1(4) #0(3) #1(3) #2(3) #3(3) #0(2) #3(2) #2(2) #1(2) #0(1) #1(1) #2(1) #3(1) #0(发射!) #1(发射!) #2(发射!) #3(发射!)
newCachedThreadPool 将为每个任务都创建一个线程!
shutdown()方法可以防止新任务被提交给这个Executor,这个要放在execute()方法提交所有任务之后
newCachedThreadPool 替换为newFixedThreadPool
newFixedThreadPool使用了有限的线程集来执行所提交的任务
ExecutorService t = Executors.newFixedThreadPool(4);
4个线程:
如果是0 报错
如果是1 只能按照顺序一个一个来
如果是2 两个两个一起来
如果是3 先执行3个,最后一个第二批执行
如果是4 全部执行
newSingleThreadExecutor就像是数量为1的newFixedThreadPool
ExecutorService t = Executors.newSingleThreadExecutor();
只能按照顺序一个一个来
运行结果:
倒计时十秒,火箭1等待发射!倒计时十秒,火箭2等待发射!倒计时十秒,火箭3等待发射!倒计时十秒,火箭4等待发射!#0(10) #0(9) #0(8) #0(7) #0(6) #0(5) #0(4) #0(3) #0(2) #0(1) #0(发射!) #1(10) #1(9) #1(8) #1(7) #1(6) #1(5) #1(4) #1(3) #1(2) #1(1) #1(发射!) #2(10) #2(9) #2(8) #2(7) #2(6) #2(5) #2(4) #2(3) #2(2) #2(1) #2(发射!) #3(10) #3(9) #3(8) #3(7) #3(6) #3(5) #3(4) #3(3) #3(2) #3(1) #3(发射!)
新闻热点
疑难解答