分类目录归档:技术栈

Java对象内存分布


Java对象内存分布

1.6 synchronize 锁升级过程?和之前的版本有什么区别?是否可逆?

偏向锁,轻量级锁,重量级锁

synchronize 首先是无锁状态,当有竞争的时候,先检查Markword中的线程id 是否存储线程id, 没有的话就设置线程id,执行同步代码块,有的话cas操作,成功的话就执行同步代码块, 失败的话就进入到轻量级锁过程。

升级轻量级锁的时候 ,会发生 stop the word,然后将原先持有偏向锁的线程升级成轻量级锁,然后在 cas 操作,成功执行同步代码块,失败进行自旋,自旋达到一定次数之后还没有执行的话,就升级成重量级锁。

偏向锁:标志位 01 ,

Read more

Spring 事务中哪几种事务传播行为?


支持当前事务的情况:

TransactionDefinition.PROPAGATION_REQUIRED: 如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 TransactionDefinition.PROPAGATION_SUPPORTS: 如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。 TransactionDefinition.PROPAGATION_MANDATORY: 如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。(mandatory:强制性)

不支持当前事务的情况:

TransactionDefinition.

Read more