Java中主方法中有一个循环打印+这个字符,有创建了一个线程打印*这个字符,哪个会先执行?
发布网友
发布时间:2022-05-13 22:13
我来回答
共4个回答
热心网友
时间:2023-11-01 13:25
哪个先执行,是看哪条线程抢到了cpu资源算的,
你现在相当于有两个线程 一个是A打印+,B打印*, B现在start(),这个方法 使B处于一个 就绪状态,而不是执行状态,然后等 cpu分配资源,cpu有个时间切片的概念,每个线程抢到了cpu的资源后,然后等切片时间后 大家都开始争夺,这些操作,可以由你代码体现出来,你会发现+*交替打印,+++++++++**********+++++************,出现这种,为什么不是*+*+*+,这样打印呢,因为在cpu时间片 的 那段时间内,它 处理速度很快,打印的次数可以多,可以少。
你说所说的那个问题,start() 只是就绪线程,而不是立马执行,如果你cpu比较垃圾的话,是可以出现 先打印*号的哦追问那么是不是说如果一个线程的start在另一个start的前面,也不能说明这个线程会先执行就是第一个打印出来的一定是第一个线程中的?
热心网友
时间:2023-11-01 13:26
既然是线程就是不确定的,想要看效果建议sleep下追问感谢回答,那您的意思是不是主线程和其他的线程一样,Java执行的时候是随机的不一定先执行主线程?
热心网友
时间:2023-11-01 13:26
看哪个线程先占用到cpu资源,这个是随机的
热心网友
时间:2023-11-01 13:27
边词(张敬忠)春闺思(张仲素)