代码:
public class ThreadDemo9_2{
public static void main(String args[]){
new TestThread().start();
for(int i=0;i<10;i++){
System.out.println("main run");
}
}
}
class TestThread extends Thread{
public void run(){
for(int i=0;i<10;i++){
System.out.println("TestThread run");
}
}
}
执行结果:
main run
main run
main run
main run
main run
main run
main run
main run
main run
main run
TestThread run
TestThread run
TestThread run
TestThread run
TestThread run
TestThread run
TestThread run
TestThread run
TestThread run
TestThread run
请教: 通过继承Thread类实现多线程,但是执行结果为什么体现不出多线程?
答案:3 悬赏:70 手机版
解决时间 2021-02-10 09:39
- 提问者网友:自食苦果
- 2021-02-09 16:25
最佳答案
- 五星知识达人网友:大漠
- 2021-02-09 17:20
这个就是时间片的问题了
楼主学过操作系统的话应该明白,cpu同一时刻只能给一个线程使用,而且时间是一定的。所以这两个线程就会是你一个时间片 我一个时间片 但对一一个时间片来说可以执行for中的几次循环 所以不是楼主想象中的那个一个main run再打印一个TestThread run
楼主学过操作系统的话应该明白,cpu同一时刻只能给一个线程使用,而且时间是一定的。所以这两个线程就会是你一个时间片 我一个时间片 但对一一个时间片来说可以执行for中的几次循环 所以不是楼主想象中的那个一个main run再打印一个TestThread run
全部回答
- 1楼网友:轻雾山林
- 2021-02-09 19:29
已经实现了线程 只是的循环的次数较少,在计算机的一个时间片就执行完了所有循环 增加到100以上就好了
- 2楼网友:煞尾
- 2021-02-09 18:58
这个是操作系统的调度造成的,两个线程是并发执行的,没有必然的main在前,thread在后的关系,是随机的,你看thread 3就在main 3前面。具体有的时候可能执行了两次print操作,有的时候只有一次,这个是由中断造成的,线程执行的过程中可能被其他优先级高的线程中断。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯