我们先假设a+=1这个命令只需要执行一次,而不是先获取a,再赋值a
在顺序一致性模型中,所有变量在同一时间被一个线程获取,其他线程需要等待,线程实现了按照顺序的串行执行,这样就使得了数据正确
但是,...,也不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个变量的行为都可以获得正确的结果,那么这个变量就是线程安全的。...作为方法修饰符使用synchronized关键字时,它可以确保在同一时间内只有一个线程可以进入被修饰的方法,其他线程必须等待该方法执行完成后才能进入。...作为代码块使用synchronized关键字时,它可以确保在同一时间内只有一个线程可以执行该代码块中的代码,其他线程必须等待当前线程执行完该代码块后才能执行。...,为了使得获得锁的代价更低,所以引入了偏向锁:
当一个线程访问同步块获得锁后,会在对象头和栈帧中记录偏向锁的线程id
以后只要是该进程获得和释放锁都不在需要进行CAS操作,而是只要判断是这个线程id就可以