a、对象无锁加Synchronizedh或别的加锁机制升级为偏向锁后,只有一个线程进入时,会直接给第一个线程进入,并贴上标
签,代表所被其占有了,待任务执行完后,释放该锁。
b、当有多个线程一起来竞争该锁时,会拆下该标签,每个线程进行CAS操作,将自己栈中的Lock Record与所对象的进行比
对,若一致,没有被其他线程改过,则持有这把锁,否则继续进行cas操作。
a、对象无锁加Synchronizedh或别的加锁机制升级为偏向锁后,只有一个线程进入时,会直接给第一个线程进入,并贴上标
签,代表所被其占有了,待任务执行完后,释放该锁。
b、当有多个线程一起来竞争该锁时,会拆下该标签,每个线程进行CAS操作,将自己栈中的Lock Record与所对象的进行比
对,若一致,没有被其他线程改过,则持有这把锁,否则继续进行cas操作。