- 博客(3)
- 收藏
- 关注
原创 synchronized 的底层原理(monitorenter 、monitorexit、ACC_SYNCHRONIZED)
是 Java 中的一个关键字,主要解决的是多个线程之间访问资源的同步性,可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。和指令实现的,指令指向同步代码块的开始位置,指令则指明同步代码块的结束位置。synchronized 修饰方法,底层使用标识,该标识指明了该方法是一个同步方法。两种情况都需要依赖Monitor 是jvm级别的对象,用c++语言实现。线程获得锁需要使用对象(锁)关联monitor。在monitor内部有三个属性,分别是owner、entrylistwaitset。
2025-01-02 22:14:56
876
原创 Spring事务this自调用失效问题以及误区
Spring事务失效的几种场景如果方法内部捕获并处理了异常,但是没有将异常抛出,会导致事务失效。因此,处理异常后应该确保异常能够被抛出。默认情况下,Spring对非受检异常(RuntimeException或其子类)进行回滚处理,如果方法抛出检查型异常(checked exception),那么异常发生时事务可能不会回滚。解决方法是:在@Transactional注解上配置rollbackFor属性为Exception。如果事务注解的方法不是公开(public)修饰的,也可能导致事务失效。
2024-12-28 00:32:46
1977
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人