- 博客(5)
- 收藏
- 关注
原创 Spring 事务——七大事务的传播机制
一、什么是事务的传播?简单的理解就是多个事务方法相互调用时,事务如何在这些方法间传播。举个栗子,方法A是一个事务的方法,方法A执行过程中调用了方法B,那么方法B有无事务以及方法B对事务的要求不同都会对方法A的事务具体执行造成影响,同时方法A的事务对方法B的事务执行也有影响,这种影响具体是什么就由两个方法所定义的事务传播类型所决定。二、Spring事务传播类型枚举Propagation介绍在Spring中对于事务的传播行为定义了七种类型分别是:REQUIRED、SUPPORTS、MANDATORY、R
2021-06-03 11:25:08 980
原创 死锁经典案例
死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。java 死锁产生的四个必要条件:1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。3、请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有。4、循环等待,即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。这样就形成了一个
2021-05-28 18:04:37 2206 3
原创 方法锁、对象锁和类锁的意义和区别
首先的明白java中锁的机制synchronized 在修饰代码块的时候需要一个reference对象作为锁的对象. 在修饰方法的时候默认是当前对象作为锁的对象. 在修饰类时候默认是当前类的Class对象作为锁的对象. 线程同步的方法:sychronized、lock、reentrantLock分析#方法锁(synchronized修饰方法时)通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。synchronized 方法控制对类成员变量的
2021-05-28 16:49:00 575
原创 线程的虚假唤醒情况
线程的虚假唤醒情况 多线程并发操作一直都是学习和工作过程中的难点,一般而言,在多个线程共享资源时,我们通常会使用synchronized代码块的同步,并通过wait()、notify()和notifyAll()来唤醒或者等待线程(这三个方法必须使用在同步代码块或同步方法中,被同步监视器调用,否则会抛出异常)。还是通过经典的生产者和消费者案例引出虚假唤醒的问题public class SpuriousWakeupDemo { public static void main(String[] a
2021-05-28 16:38:35 75
原创 Java多线程-线程8锁
多线程的八个案例通过分析代码,推测打印结果,并运行代码进行验证。1)两个线程调用同一个对象的两个同步方法代码如下: 1 public class Demo { 2 public static void main(String[] args) { 3 Number number = new Number(); 4 5 new Thread(new Runnable() { 6 @Override 7
2021-05-28 16:07:03 147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人