本文源碼:GitHub·點這裏 || GitEE·點這裏 一、資源和加鎖 1、場景描述 多線程併發訪問同一個資源問題,假如線程A獲取變量之後修改變量值,線程C在此時也獲取變量值並且修改,兩個線程同時併發處理一個變量,就會導致併發問題。 這種并行處理數據庫的情況在實際的業務開發中很常見,兩個線程先後修改數據庫的值,導致數據有問題,該問題復現的概率不大,處理的時候需要對整個模塊體系有概念,才能容易定位問題。 2、演示案例 public class LockThread01 { public static void main(String[] args) { CountAdd countAdd = new CountAdd() ; AddThread01 addThread01 = new AddThread01(countAdd) ; addThread01.start(); AddThread02 varThread02 = new AddThread02(countAdd) ; varThread02.start(); } } class AddThread01 extends Thread { private CountAdd countAdd ; public AddThread01 (CountAdd countAdd){ this.countAdd = countAdd ; } @Override public void run() { countAdd.countAdd(30); } } class AddThread02 extends Thread { private CountAdd countAdd ; public AddThread02 (CountAdd countAdd){ this.countAdd = countAdd ; } @Override public void run() { countAdd.cou...