课程
/后端开发
/Java
/深入浅出Java多线程
敢问这个程序是怎么结束的吗?我看不到哪里是结束语句,按理说他是个无限循环的啊!!
2015-06-29
源自:深入浅出Java多线程 2-4
正在回答
个人理解为在Stage类的run()中
armyOfSuiDynasty.start(); armyOfRevolt.start();
之后的
try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); }
这句代码起到了作用,也就是说在两军交战的50ms之内stage线程处于休眠不会参与到对处理器的竞争中,而50ms的休眠时间过后,stage线程参与竞争处理器使用,将keepRunning设为false,结束军队的两个线程。
不知理解的对不对,还请指正。
在单核机器中,可以那么理解,主线程休眠了,其他线程获得资源运行。但是现在电脑都是多核。可以同时,不是以前基于单核分片执行。Thread.sleep(100);就是当前线程睡眠0.1秒,
Adsun
qq_老表_1
这个是线程休眠,等待0.1s后线程再执行,如果遇见异常就抛出。
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这个事件是控制主线程的吗?也就是main这个线程,当主线程休眠的时候,也就是其他线程运行的时间?想了很久,只能只能理解了,初学者,不知道对不对!!!?
举报
带你一起深入浅出多线程,掌握基础,展望进阶路线
2 回答子线程执行结束之后才能main方法的结束舞台输出吗?线程不应该是抢占资源吗?为什么没加入join,程咬金最后执行,其他线程也没调用join但是在结束前执行完毕
1 回答main线程结束,子线程为什么没有退出?
2 回答是不是使用了join 之后,使用了join 的线程运行结束之后才能让这个程序再次的运行下去。如果不是用join 那么这个线程在运行的时候和当前方法中的运行关系不大。所以就提前输出了战斗结束。
4 回答这个程序总共生成了4个线程是不?
2 回答不知道什么时候结束的欸