关于线程的一个疑问

关于线程的一个疑问

1
public class ShutDown {<br>    public static void main(String[] args) {<br>        ExecutorService executorService = Executors.newFixedThreadPool(10);<br>        for (int i = 0; i < 1000; i++) {<br>            executorService.execute(new ShutDownTask());<br>        }<br>        try {<br>           Thread.sleep(1500);<br>        } catch (InterruptedException e) {<br>            e.printStackTrace();<br>        }<br>​        List<Runnable> runnableList=executorService.shutdownNow();<br>        System.out.println(runnableList.size());<br><br>    }<br>}
1
class ShutDownTask implements Runnable {<br>    @Override<br>    public void run() {<br>        try {<br>            Thread.sleep(500);<br>            System.out.println(Thread.currentThread().getName());<br>        } catch (InterruptedException e) {<br>            System.out.println("被中断了:"+Thread.currentThread().getName());<br>            e.printStackTrace();<br>        }<br><br>    }<br>}<br>

这里for循环的作用是把任务放到任务队列中,由线程池去执行1000个任务,主线程继续往下执行不受正在执行的1000个任务的干扰对吗?主线程和线程池中的任务是同步执行还是交替执行的?我有点不理解

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,如下这段代码时循环生成30个线程并启动,是生成一个线程启动后再进行下一个。

http://img1.sycdn.imooc.com//climg/600cda7c0993668c02890182.jpg

祝学习愉快~

  • mahsiaoko 提问者 #1

    这里的启动是指的字面的启动?没有执行完这个线程?

    2021-01-24 10:41:17
  • 好帮手慕阿满 回复 提问者 mahsiaoko #2

    同学你好,线程已经启动,不一定执行完成。

    祝学习愉快~

    2021-01-24 15:36:54
好帮手慕小尤 2021-01-23 14:50:45

同学你好,1、是的,同学理解是正确的,

2、是同步执行的,因线程继续往下执行,不受正在执行的1000个任务的干扰,所以主线程和线程池中的任务是同步执行的,不是交替执行的。

祝学习愉快!

  • 提问者 mahsiaoko #1
    1
    for (int i = 0; i < 30; i++) {<br>    new Thread(new Runnable() {<br>        @Override<br>        public void run() {<br><br>        }<br>    }).start();<br>}

    老师,那这样的三十个线程是依次执行吗?执行完一个才会进行下一个循环?

    2021-01-23 22:20:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码