Java程序中有一个线程和一个定时器,他们都会对数据库(Mysql)中的时间进行修改操作。有时可能会对同一条数据进行操作这样就出现了线程和定时器都处在阻塞状态了 没有任何反应了。请问如何才能避免这样造成的死锁问题呢?很急! 
 
 
 

解决方案 »

  1.   

    按照主键顺序更新能够避免一些死锁如 update tb set updatetime=now() order by id;
      

  2.   

    是不是说update ...... where id(主键)=? 最好where条件后面跟的是主键啊?数据库是mysql
      

  3.   

    是,如果不是的话,更新的时候,用主键排序! 
    update tb set updatetime=now() where condition order by 主键;
      

  4.   

    最好的办法是使用乐观锁定:
    udpate table t set col1 = :col1, col2 = :col2 where col1 = :old_col2 and col2 = :old_col2 and ...
    加上旧值限制,只要使用的是行锁,那以基本上不会相互锁定。