zoukankan      html  css  js  c++  java
  • 多线程时控制并发数据库操作的思路

    忠告: 在可能的情况下,尽量不要使用多线程!

    多线程问题的出现原因,比如写库这类操作是非常费时的操作,为了不影响主线程的运行,就把这种费时的操作移除主线程,进行异步操作。但是,异步操作就不可能会出现脏数据(极端时间内针对同一条数据进行写和读,读的数据是写之前的数据,导致数据错误)

    解决思路: 把并发的操作串行化!!

    如果做到这一点:

    1) 首先要保证发起操作的时序。 这就要求对同一条数据的操作要来自同一个线程。如果操作本身的线程都无法确定,那有如何去确定正确性呢。而且那样很容易发生死锁。

    2)其次要保证同一数据的每条操作能够顺序执行完毕,只有执行完前一条才允许执行后一条。因此一条操作执行时需要对数据进行加锁,执行完成后解锁。收到解锁通知后才会继续触发后续操作。

    3) 尽量保证每条操作的数据需求单一化。一旦操作需求多条数据,就很可能出现死锁。

  • 相关阅读:
    java嵌套循环练习
    java菜鸡循环练习
    Kruskal重构树
    狄利克雷卷积
    莫比乌斯反演
    两道趣题
    树状数组
    多重背包
    SPFA与差分约束
    快速线性筛
  • 原文地址:https://www.cnblogs.com/xitang/p/2126206.html
Copyright © 2011-2022 走看看