run() 顺序执行
start() 多线程乱序执行




Thread.CurrentThread()












每一个对象都有一把锁,sleep 不会释放锁






















sleep可以放大问题的发生性——真实的场景下是成千上万的人在用


两个Thread 操作同一个 list,插入了相同的位置,元素被覆盖掉了

获得调用该方法的对象的锁
原文:https://www.cnblogs.com/cx2016/p/13170358.html