java吧 关注:1,247,585贴子:12,726,357

求助,关于多线程,视频中讲的4个窗口同时卖100张票

只看楼主收藏回复

当票tick没有静态的时候会出现4个窗口同时卖同一张票的情况,为什么票静态之后就没有这种情况,视频说是静态之后表示票被4个窗口共享,我想问一下为什么???


来自Android客户端1楼2015-10-06 01:25回复


    来自Android客户端2楼2015-10-06 01:27
    回复


      来自Android客户端3楼2015-10-06 01:27
      回复


        来自Android客户端4楼2015-10-06 01:27
        回复


          来自Android客户端5楼2015-10-06 01:27
          回复


            来自Android客户端6楼2015-10-06 01:27
            回复


              来自Android客户端7楼2015-10-06 01:27
              回复


                来自Android客户端8楼2015-10-06 01:27
                回复


                  来自Android客户端9楼2015-10-06 01:28
                  回复


                    来自Android客户端10楼2015-10-06 01:28
                    回复
                      百度java synchronized


                      IP属地:四川来自Android客户端11楼2015-10-06 01:28
                      收起回复
                        因为1.不加static时你每次new新的第n个ticket对象时,堆空间里开辟出来第n个内存块,里面出现第n个tick值,这个tick值和其他你new出来ticket对象的内存块里的tick值是独立的。当第一个内存块里面值为100的tick被卖掉,第n个内存块还能卖值为100的票。现实中你这个100号的票卖了n次,买到这个号的有好几个人,会打架的。


                        IP属地:四川来自Android客户端12楼2015-10-06 01:57
                        回复
                          2.加了static,这个tick是类的量,是放在类空间里的,你新new出来的n个ticket对象的堆空间开辟的内存里并没有tick值,大家都公用这一个属于类空间的tick值,如果100号被卖出,其他对象不能再卖这个号了


                          IP属地:四川来自Android客户端13楼2015-10-06 02:03
                          收起回复
                            静态是随着类加载的。


                            来自iPhone客户端15楼2015-10-06 04:18
                            收起回复
                              并发,加锁吧,但是要记住,暂时没有什么方法能彻底解决并发。


                              来自iPhone客户端16楼2015-10-06 04:20
                              收起回复