java吧 关注:1,241,361贴子:12,713,088

改了很久,但是总是达不到预期想法。。。。

只看楼主收藏回复




IP属地:罗马尼亚1楼2020-05-06 15:44回复
    要求是: 设计一个抢票程序 要求: 1、票池总票数为20张 2、启动四个线程(代表四个人)抢票,每个线程进入后,打印当前抢到票的线程名称、抢到几张票,还剩几张这些信息


    IP属地:罗马尼亚2楼2020-05-06 15:44
    回复
      我改了很久,最后改成这个样子,但是他这四个人就抢一下就不抢了,搞得我一脸懵逼


      IP属地:罗马尼亚3楼2020-05-06 15:45
      回复
        兄弟 你打完输出信息之后 直接return了 直接结束run方法了 那还跑个屁 当然不会进入下一个循环了


        IP属地:福建4楼2020-05-06 15:54
        收起回复
          有个东西叫continue;


          5楼2020-05-06 15:56
          收起回复
            把return条件放到count<=0里就行了 结束之后进入while true里还是会先抢锁


            IP属地:福建7楼2020-05-06 16:03
            回复
              循环有问题啊,老哥


              IP属地:重庆8楼2020-05-06 16:38
              收起回复
                不抢了,查看java带的工具检测死锁


                IP属地:浙江9楼2020-05-06 16:46
                回复
                  我不是说了 return放到count<=0里面 还纠结什么?


                  IP属地:福建10楼2020-05-06 16:46
                  回复
                    另外synchronized这种对性能限制的锁,实际需求很少用,可以采用java并发包工具类,并使用lambda和volatile以及Atomic类控制mutate vagaries。
                    最终解决可变共享变量,注意在多线程中,标志位boolean,也是可变的要十分小心。


                    IP属地:浙江11楼2020-05-06 16:50
                    收起回复

                      简单写了一下,应该是这个样子了


                      IP属地:重庆12楼2020-05-06 17:06
                      收起回复
                        不需要return


                        IP属地:江苏来自iPhone客户端14楼2020-05-09 12:04
                        回复
                          cas和volatile比较好


                          IP属地:中国香港来自iPhone客户端16楼2020-05-09 17:33
                          回复
                            票数为零再return 你可以sleep一下 让他们慢慢抢


                            IP属地:广西来自Android客户端17楼2020-05-09 18:11
                            回复