00:00
好,那第二种方式呢,咱们讲完以后,咱们呢,再回到那会儿咱们做的这个卖票的这个事儿,卖票呢,咱们是使用的继承的方式。啊,这呢,咱们是使用哎继承thread类的方式来做的。哎,方式来实现的啊,那接下来呢,咱们还做这个事儿,只不过呢,这个时候呢,咱们使用这种实现runable接口的方式来做,看看怎么实现啊CTRLC我们呢,再去新建一个。啊,Java文件这块呢,我叫window test1叫它吧。你看这块呢,咱们CTRLV一下是使用实现reable接口的方式。哎,这个方式来实现,好,那咱们回忆一下啊,这个应该怎么去做,首先我这也叫一个window吧,Window那块也叫过来叫WINDOW1,这个WINDOW1让他去implements叫runable接口,接着呢,哎,重写咱们的run方法啊,Al enter,哎,Run方法,嗯,卖票。
01:20
卖票呢,一共有100张啊,一样的道理,咱们在这呢去声明一个叫private int型的。TK100张票,然后在这个RA里边,还是跟刚才逻辑呢是一样的出,如果TK大于零,哎,在这里边我们就去卖票了。这个呢,我们也是点你这。哎,票号为哎加上我们的TK。哎,然后呢,T减减这样,然后这来一个else,哎,来一个break。
02:06
哎,这个跟咱们刚才写的逻辑呢是一样的,这个完了以后,接着回到咱们这个测试这块来一个may,诶首先造一个WINDOW1的对象。好,上一个对象了,接下来把这个对象作为参数传递到咱们这个thread类的构造器当中。哎,在这看al enter叫T。咱们呢,一共是开启了三个窗口,这个时候呢,同样的道理,咱们这个呢,是不是就没有必要再去拗三个对象了,哎,我就直接呢,把这个是不是拗扭三个呀,嗯,这是三个线程了啊。然后呢,在启动之前,给每一个线程呢,都起个名字,这个呢叫窗口一。哎,类似的二三。
03:01
好,这呢就OK了,接下来诶让他们这几个县城呢都一下。哎,这个时候呢,就启动好了。注意此时呢,咱们这个ticket我没有加static,我没有加static,那我们现在要执行的话呢,嗯,那大家想一下啊,这个时候呢,应该算是100张票呢,还是说300张票呢,100张就是这个时候呢,他们三者或者要三个线程啊,自然的是不是就共用同一个TK了啊是的,来我们执行一下。啊,这个仍然不是一个严格的这个递减啊,嗯,大体上我们看一下。你看确实是100张啊,这个重票这个事儿呢,大家也是啊,先忽略一下这个问题啊,就是说白了就是我们这种实现的方式啊,它仍然也存在这个叫现成的安全问题。
04:00
那这个仍然是待解决的,咱们先忽略掉这个问题啊。嗯,他先他呢先忽略掉,然后整体来讲的话呢,我们没有加static,就自然而然的只有100张票啊,那这时候想为啥呢。哎,这说明大家对面向对象这块还是比较扎实的啊,哎,就是我们这时候呢,只造了一个对象,我这一个对象呢,放到三个构造器当中,相当于你这三个线程是不是都是用的同一个new的window啊哎,那同一个new的window,那我这个里边呢,T自然而然呢也就是同一个了,所以你们再去剪,剪的时候呢,都是同一个T。所以此时呢,它根本就不用加TE club啊,这要注意啊,当然要有的同学你你一不小心怎么着了,又整了一个这个WINDOW1啊,然后在这块用个一,这这是不是就变了,哎,这就变了啊,相当于你这俩呢共用100张,这个呢是不是自己100张了,对啊,这个要小心一点,那咱们这块呢,就只用造一个window对象,哎就可以了。
05:11
好,这呢,咱们相当于是用实践的方式体会了一下这个卖票这个程序该怎么去写。
我来说两句