什么叫同步?
同步指的某一操作的原子性。什么是原子性?原子性指,针对某一个操作,同时只能有一个线程在执行,其余线程都不能执行,这样就保证了线程同步。
也就是说线程同步指的是线程运行的时候线程和线程互不干扰。
为什么要同步?
说到为什么要同步,因为多线程的时候如果是单核cpu,相邻两个操作直接会有多个线程在执行。
比如 i=1; i++; syso(i) 在i++和打印直接可能会有多个线程在执行,i++之后变成2,然后准备打印的时候。可能会有第二个线程在执行i++,i就变成了3。这样中间的2没有被打印出来。
因此我么需要确保在执行某一个操作的时候没有其他线程进来打扰,因此需要线程同步。
造成线程不同步的原因上面也说了,是因为有其他线程打扰,解决方法就是不让线程打扰。
加锁!
锁的是什么东西呢?
锁的是当前对象
因为多个线程调用同一个方法的时候,如果锁的是thread对象,那么对象有很多个,只有一把锁,那其他线程对象怎么锁。
因此锁的是这个类的对象。