解决因添加同步锁导致的事务失效问题


在使用@Transactional注解的方法内部使用synchronized,在方法执行完毕后锁就会被释放,而此时事务可能还没有被提交,此时若有其他线程对数据进行修改会出现并发安全问题。若将锁加在函数调用的地方,将整个方法进行加锁。这样当方法执行完毕且事务也提交完毕之后锁才会被释放。public i

JUC笔记(四)常用方法

JUC 

线程方法APIThread 类 API:方法说明public void start()启动一个新线程,Java虚拟机调用此线程的 run 方法public void run()线程启动后调用该方法public void setName(String name)给当前线程取名字public void

JUC笔记(三)线程运行原理

JUC 

栈与栈帧JVM中由堆、栈、方法区组成。每个线程启动后,虚拟机就会为其分配一块栈内存。每个栈由多个栈帧(Frame)组成,对应每次方法调用时所占的内存每个线程只能有一个活动栈帧,对应当前正在执行的方法一个栈帧包含局部变量、操作数栈、动态链接、返回值等信息方法结束之后栈帧即被释放类运行过程将类中的各种方

JUC笔记(二)创建和运行线程

JUC 

创建和运行线程直接使用Theadpublic class Main { public static void main(String []args){ Thread t = new Thread(){ @Override public

JUC笔记(一)进程与线程

JUC 

进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。进程就是用来加载所运行的程序的指令、管理内存、管理IO的(与操作系统区别)当一个程序被运行时,从磁盘加载这个程序的代码至内存,这就开启了一个进程进程就是可以视为程序的一个实例。大部分程序可以同