刚接触多线程内容,想求解一下两段程序为什么会有不同的结果。希望能较详细的解答,感谢!
区别在于上面代码是,先判断再上锁同步。下面代码先同步上锁,在判断执不执行。1.这就会出现,上面代码可能会出现A,B二个线程同时通过判断,但A线程先获取到锁进行执行。这个时候B线程就只能在这个地方等待。等A执行完了tickers-- = 0 后。B线程在去获取锁进行执行代码块。又执行了一次 tickers-- 。