java吧 关注:1,271,983贴子:12,780,458
  • 13回复贴,共1

求助多线程问题

只看楼主收藏回复

想问下,我这样起了三个线程,三个test方法都是只有输出语句,为啥三个输出顺序永远是123啊?如果每个方法里都sleep 1秒,又会变成132不变,这事为啥啊,我的理解不应该每次顺序都不一样吗


IP属地:河南1楼2023-06-04 20:40回复
    每个test方法都加了synchronized


    IP属地:河南来自Android客户端3楼2023-06-04 23:41
    回复
      2025-08-01 00:27:41
      广告
      不感兴趣
      开通SVIP免广告
      没人吗


      IP属地:河南来自Android客户端4楼2023-06-05 12:30
      回复
        111


        IP属地:河南来自Android客户端7楼2023-06-05 16:32
        回复
          我不敢苟同你的观点,我认为林冲在三打白骨精的时候就不应该骑这个电动车,因为这个电动车的轮胎很容易影响这个孙悟空的金箍棒变大,你一扭电门的时候,就会产生大量的真香定律,并且严重影响到保洁阿姨打扫玉皇大帝的卧室,让苹果砸不到阿基米德的脑袋,最后就会造成大量的核辐射。


          IP属地:陕西8楼2023-06-05 16:50
          回复
            学这干嘛,十几年的java 工程师都要失业了,一本软工找不到工作。


            IP属地:湖北9楼2023-06-05 16:57
            收起回复
              java吧亡了吗,就剩卖课的了


              IP属地:河南来自Android客户端11楼2023-06-08 12:03
              回复
                看了好多资料,说下我的理解,在这个例子里锁中的代码只有一个输出语句,启动线程的速度远比线程执行的速度慢,所以线程1拿到锁执行输出语句之后立刻释放锁,此时线程2刚刚处于就绪状态,直接自旋拿到锁输出,3同理,所以输出一直是123。方法1加了sleep1000后,1s足够线程23启动,23启动自旋获取锁失败进入竞争栈,1释放锁3先出栈,造成了132的输出顺序


                IP属地:河南来自Android客户端13楼2023-06-08 17:06
                收起回复
                  2025-08-01 00:21:41
                  广告
                  不感兴趣
                  开通SVIP免广告
                  这个是正常的,123的顺序都不一定 @最后的倔强


                  IP属地:河南14楼2023-06-08 20:52
                  回复
                    今天有想到了这个问题,翻出来复习下,有没有大佬看看是不是我想的这样


                    IP属地:河南来自Android客户端15楼2024-02-21 18:05
                    回复