多线程 同步代码块 锁

学同步代码块时 不是太明白同步和加锁,希望给个详细的解释
同步和加锁含义是什么 怎样解释

同步和互斥的原理和区别:同步需要用信号量,通过信号量来控制代码,互斥一般是用锁来控制,就是互斥锁,防止同一时间访问临界资源。
锁就是用来互斥的一种方式,

同步的概念是在多线程的时候才有的,一个进程中可以有多个线程,当两个线程或者多个线程同时去访问一个变量的时候,并且其中一个线程去修改这个变量时这时候就要去进行处理,否则肯定会发生混乱,因为这两个线程是同时进行的!所以我们这时候就要用到同步
这里我们用Synchronized来把修改变量的那个线程进行加锁,保证在这个线程修改变量结束前没有其他的线程在去访问这个变量,在被加锁的线程没有走完之前,其他的线程不能在去访问变量 这就是同步的!

跟现实中的锁是同一个道理,你可以类比生活中的洗手间,你进去,得加锁,不然别人也能进,你出来,就解锁了,一个坑,只能蹲一个人,也就是一个线程

这样理解吧!加了同步代码块的代码,只能有一个对象去操作

防止多线程同时操作同一个变量,导致最后结果不准确,
加锁后,同一时间只能一个线程操作这个变量,保证结果的准确性