synchronized官方解释
翻译成中文:
Synchronized同步方法可以支持使用一种简单的策略来防止线程干扰和内存一致性错误:如果一个对象对多个线程可见,则对该对象变量的所有读取或写入都是通过同步方法完成的。
简单就是说Synchronized的作用就是Java中解决并发问题的一种最常用最简单的方法 ,他可以确保同一个时刻最多只有一个线程执行同步代码,从而保证多线程环境下并发安全的效果。 如果有一段代码被Synchronized所修饰,那么这段代码就会以原子的方式执行,当多个线程在执行这段代码的时候,它们是互斥的,不会相互干扰,不会同时执行。
Synchronized工作机制是在多线程环境中使用一把锁,在第一个线程去执行的时候去获取这把锁才能执行,一旦获取就独占这把锁直到执行完毕或者在一定条件下才会去释放这把锁,在这把锁释放之前其他的线程只能阻塞等待。
synchronized关键字失效原因
在分布式系统中,由于分布式系统中的分布性,即多线程并发和多进程并行(服务拆分后的多服务模式) 分布在不同机器中,这个时候就可能存在a\b\c服务都抢占到了资源,此时synchronized失去原有锁的效果,因此需要分布式锁来解决问题
解决方案
https://blog.csdn.net/Phantom_123/article/details/104182967