举个例子,就那火车站的售票系统,有10个售票窗口:
如果同一时间,在10个售票窗口有10个人,他们要买去同一个地方的票,也就是同意班次的票,他们都问有没有票?;
但是,现在库存数量是只有1张。
问题是:这是个窗口的售票员都能看到这一张票呢,还是只有其中一名售票员能看到这张票。
如果所有的售票员都能看到还有一张票,然后告诉给窗口乘客有,但是能出10张票吗?
如果只有一个售票员能看到还有一张票,那他告诉窗口乘客说有一张,其他人都被告知没有了,走人了,但是这个知道有票的乘客由于某种原由没有买这张票。那岂不是害的其他窗口的那些乘客没有机会买这张票呢?

这种问题从技术上、实际操作,是如何解决的。这个系统会是如何设计的呢?

解决方案 »

  1.   

    都可以看到。
    但是预订的时候最先定的加锁,其他预订失败,transaction.
      

  2.   

    用synchronozid声明同步,if()条件充当红绿灯,问的时候谁都可以问,谁都可以看见,一旦有人预定了,红灯开启,资源除了第一个访问的线程任何线程无法干预了。