我要实现这样一个功能,比如数据库里插入数据时,后一个人必须等待前一个人操作完成后才能进行。或者java中有一个方法,在任何时刻只能有一个人在调用执行该方法。请各位大侠讲讲实现的思路和原理(最好不要用synchronizied)谢谢!

解决方案 »

  1.   

    1在2前面则:2中wait()
    1中处理完成后调用notify()wait(),nofity()都是Object的成员方法,所有java类都支持 
      

  2.   

    线程同步,但是我在想 你为什么不用方法锁定呢!synchronizied应该比较简单吧!
      

  3.   

    用synchronizied锁定方法啊 一次只能允许一个人操作
      

  4.   

    线程同步,有两种方法:调用synchronize()或者调用wait()和notify()方法
      

  5.   


    只有一个数据库的话,操作之前先对表加悲观锁。
    多个数据库怎么锁表怎么多线程也没用。
    ps:用sync,如果存在多个应用服务器连同一个数据库,还是锁不了。所以建议锁表。
      

  6.   

    对数据表进行琐表,处理完commit,这样可以保证同一时间对表的操作,只有一个人,只能在数据库级进行控制
      

  7.   

    LZ 在数据库这一块做文章: 搜索一下 数据库 锁 . 你这个需求用 悲观锁 ,可以满足需求不知道你用的什么数据库,若不是 oracle ,不能用 nowait ,会很占数据库资源.想用户体验更好,可以用 乐观锁
      

  8.   

    如楼上所言。我建议使用乐观锁:
    简单讲:就是在数据库中增加一个代表版本的字段(可以是版本号,或者时间戳,或兼而有之),在更新前读取数据的时候,顺便把版本通过页面hidden字段或者其他方式保留下来,进行更新操作的时候,先select,比较版本是否一致,然后再更新数据,并更新版本号。
      

  9.   

    灵活运用锁机制(悲观乐观锁)就好了web开发还用线程就麻烦了