main窗口卖了一张票,剩余票数为4
main窗口卖了一张票,剩余票数为3
main窗口卖了一张票,剩余票数为2
main窗口卖了一张票,剩余票数为1
main窗口卖了一张票,剩余票数为0
main窗口卖了一张票,剩余票数为3
main窗口卖了一张票,剩余票数为2
main窗口卖了一张票,剩余票数为1
main窗口卖了一张票,剩余票数为0
2016-05-14
最赞回答 / Angel若梦
你的代码有两处错误1.用继承Thread的方法实现多线程,需要new多个对象,这也是你在共享变量是加static的原因,所以,你使用的锁对象this是不同的对象,所以不能实现线程的互斥.可以使用该类的字节码对象Ticket.class作为锁对象.2.如果已经实现了互斥,你需要在同步代码块中增加一个判断条件,用来终止程序继续执行,否则会出现打印负数的情况.因为, 未获得锁的线程会在循环内等待,当一条线程将tickets--到0的时候,其他等待的线程获得锁以后会继续执行后续代码,导致运行结果不准确.
2016-03-13
举的例子不合适,容易误导别人!继承thread的子类中定义了票数变量,每new一下启动新线程,都会有5张票,把票数变量定义成全局变量试试
2016-03-13