用的是acess数据库啊,多个用户同时选择一张卡该怎么办.

解决方案 »

  1.   

    public synchronized void f(){
       分配这张卡给客户
    }
      

  2.   

    longrenrex(菜菜龙) 这样好象不行吧,如果一但服务down机或用户非正常退出表的状态没有置回来,那么这个用户不是永远用不了这张卡了吗
      

  3.   

    我觉得longrenrex(菜菜龙)的办法可行,就是设几个状态字段的问题
      

  4.   

    haozhangpk(步惊云)  说的有道理,如果用户放弃这张卡,那么这张卡就永远不能为消费者看见了
      

  5.   

    synchronized 数据库使用事务机制来实现!
      

  6.   

    这样行不?为卡片表设置 是否销售,是否已提交显示给用户,提交时间,用户SESSION等标志字段,再使用public synchronized void f(){
       提出所有未销售且未提交显示给用户的卡片
       分配这张卡给客户
    }
    确保给每个客户提供的是不同的卡片但是怎么处理那些已经提交显示给用户但最终未销售的卡片呢?
      

  7.   

    设置一个缓冲对象,这个对象中缓冲由数据库中查寻卡片的信息,同时包含两个方法,以提取卡片信息,2是将卡片信息回写道数据库。之后再用户调用卡片的同时,使调用卡片的方法同步与这个缓冲对象,就可以实现你所要的功能了。具体实现你可以自己写,如果还有什么不明白的问题,建议参看张孝祥老师的java讲座第8讲,关于多线程的内容。
      

  8.   

    如果简单一点的话,
    我觉得使用一个字段标志卡是否卖出,在选择卡时 用数据库事务控制
    try{
    DBTransaction.start();
    if(!卡已经售出)
    {
      选择卡
      设置标志
    }
    DBTransaction.commit();
    }
    catch(Exception e)
    {
    DBTransaction.rollback();
    }