场景描述:假设现在我们总共有1000张票要进行出售,共有10个出售点,那么当售票到最后只有一张票时每个售票点如何去处理这唯一的一张票?或者对于某一张票而言,假设它正在售票站1售票的程序执行过程中,但是还没有出售,那么此时,其他售票站改如何去处理这张票呢?
这是典型的并发问题,涉及线程同步,在Java总可以采用锁的机制实现,本文将例举
synchronize
与volatile
的原子变量类来解决,
每个方案都是详细的代码解释,完整代码可见文末链接
1. synchronize解决方案
1 | public class SynchronizeExample { |
2. volatile+AtomicInteger解决方案
1 | /** |