前面的买火车票的案例的代码存在线程安全问题
问题1:多个线程抢票出现相同的票数
问题2:出现错误票数,如:0,-1,-2等
原因:多个线程,在争抢资源的过程中,导致共享的资源出现问题,一个线程还没执行完,另一个线程就参与进来了,开始争抢
解决:在我的程序中,加入"锁"-->加同步-->同步监视器
方法1.同步代码块
实现Runnable接口
public class BuyTicketThread implements Runnable{
int ticketNum=10;
@Override
public void run() {
for (int i=1;i<=100;i++) {
synchronized (this) {//把具有安全隐患的代码锁住,如果锁多了就会效率低-->this 就是这个锁
if (ticketNum > 0) {
System.out.println("我在" + Thread.currentThread().ge