求助多线程问题
java吧
全部回复
仅看楼主
level 3
小将一人 楼主
想问下,我这样起了三个线程,三个test方法都是只有输出语句,为啥三个输出顺序永远是123啊?如果每个方法里都sleep 1秒,又会变成132不变,这事为啥啊,我的理解不应该每次顺序都不一样吗
2023年06月04日 12点06分 1
level 3
小将一人 楼主
每个test方法都加了synchronized
2023年06月04日 15点06分 3
level 3
小将一人 楼主
没人吗[泪]
2023年06月05日 04点06分 4
level 3
小将一人 楼主
111
2023年06月05日 08点06分 7
level 13
我不敢苟同你的观点,我认为林冲在三打白骨精的时候就不应该骑这个电动车,因为这个电动车的轮胎很容易影响这个孙悟空的金箍棒变大,你一扭电门的时候,就会产生大量的
真香
定律,并且严重影响到保洁阿姨打扫玉皇大帝的卧室,让苹果砸不到阿基米德的脑袋,最后就会造成大量的核辐射。
2023年06月05日 08点06分 8
level 9
学这干嘛,十几年的java 工程师都要失业了,一本软工找不到工作。[啊]
2023年06月05日 08点06分 9
该学还是得学啊
2023年06月07日 05点06分
level 3
小将一人 楼主
java吧亡了吗,就剩卖课的了[泪]
2023年06月08日 04点06分 11
level 3
小将一人 楼主
看了好多资料,说下我的理解,在这个例子里锁中的代码只有一个输出语句,启动线程的速度远比线程执行的速度慢,所以线程1拿到锁执行输出语句之后立刻释放锁,此时线程2刚刚处于就绪状态,直接自旋拿到锁输出,3同理,所以输出一直是123。方法1加了sleep1000后,1s足够线程23启动,23启动自旋获取锁失败进入竞争栈,1释放锁3先出栈,造成了132的输出顺序
2023年06月08日 09点06分 13
补充一下,如果用for循环new线程,输出顺序不一定,猜测是for循环把new线程的代码搞成热点代码了所以编译速度快过线程执行速度,不知道对不对但只有这样感觉才合理[泪]
2023年06月08日 09点06分
@f法国老汉 你可以试一下,只有输出语句的话,永远是123,我后来扩充到8个线程,永远是12345678,不然我也不会发帖了
2023年06月08日 09点06分
@f法国老汉 楼下,先创建再执行是正常的
2023年06月08日 12点06分
level 3
小将一人 楼主
这个是正常的,123的顺序都不一定 @最后的倔强
2023年06月08日 12点06分 14
level 3
小将一人 楼主
今天有想到了这个问题,翻出来复习下,有没有大佬看看是不是我想的这样
2024年02月21日 10点02分 15
1