![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java并发编程
文章平均质量分 86
并发(concurrent)是指同一时间处理多件事情的能力。一般发生在Java多线程抢占资源的情况,而同步机制保证线程安全。
不会叫的狼
人类最大的进步就是学会共享!
展开
-
springMVC中的@Controller和@Service高并发线程安全问题
1. spring单例模式,controller、service和dao一般都是无状态的,就算是有状态的,只是调用里面的方法,而且多线程调用一个实例的方法,会在内存中复制变量,这是自己的线程的工作内存,是线程安全的。2. controller、service一定要定义变量的话,用ThreadLocal来封装,保证线程安全。3. 单例模式大大节省了实例的创建和销毁的时间,有利于提高性能,而ThreadLocal用来保证线程安全性。...原创 2022-06-13 23:54:22 · 2602 阅读 · 0 评论 -
Spring的线程安全问题
spring单例bean如果存在共享变量,多线程场景下会产生线程安全问题。解决方案:1、scope设置property 2、使bean为无状态 3、加锁 4、ThreadLocal原创 2022-06-13 21:15:32 · 1427 阅读 · 0 评论 -
说说concurrenthashmap的底层实现?说说hashmap和concurrenthashmap的区别
ConccurrentHashMap,通过分段锁的形式来实现高效的并发操作。转载 2022-06-05 16:23:56 · 245 阅读 · 0 评论 -
Java并发-ThreadLocal
1、ThreadLocal为变量在每个线程中都创建了一个副本,且该副本只能由当前 Thread 使用,其它 Thread 不可访问,那就不存在多线程间共享的问题。2、Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。3、Thread线程包含ThreadLocalMap属性,ThreadLocal的弱引用作为key。4、ThreadLocal 变量通常被private static修饰。...原创 2022-05-31 02:10:38 · 633 阅读 · 0 评论 -
volatile和synchronized的区别
Java语言提供了弱同步机制,即volatile变量,以确保变量的更新通知其他线程。volatile变量具备变量可见性、禁止重排序两种特性。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。变量可见性保证该变量对所有线程可见,这里的可见性指的是当一个线程修改了变量的值,那么新的值对于其他线程是可以立即获取的。禁止重排序volatile禁止了指令重排。比sychronized更轻量级的同步锁。在访问volatile 变量时转载 2021-04-19 15:10:09 · 85 阅读 · 0 评论 -
synchronized关键字面试题
synchronized面试题原创 2022-06-05 01:14:47 · 443 阅读 · 0 评论 -
synchronized原理
synchronized四大特性:原子性、可见性、有序性、可重入性synchronized在JSK1.6之前是互斥锁,JDK1.6后对它进行优化,引入了偏向锁,轻量级锁,自旋锁等概念。锁消除:去除不可能存在共享资源竞争的锁。偏向锁:偏向锁是在单线程执行代码块时使用的机制,把线程的ID记录在对象的Mark Word中,当同一个线程再次进入时,就不再进行同步操作。自适应的CAS自旋:不断地循环检测锁是否被释放轻量级锁:将对象的Mark Word复制到当前线程的Lock Record中,并将对象的Mar原创 2022-06-04 16:01:18 · 614 阅读 · 0 评论 -
CAS机制面试题
CAS是乐观锁,线程不堵塞,但是CPU开销大,适合并发不太高的场景。synchronized是悲观锁,会使获取不到锁的线程堵塞,涉及线程上下文切换,效率低,但保证线程安全,适合高并发场景。原创 2022-06-05 15:48:50 · 869 阅读 · 0 评论 -
CAS和自旋锁
1、CAS:Compare And Swap即比较并替换,先检查旧值一致后才会替换。2、CAS自旋锁:指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待获取,直到获取到锁才会退出循环。3、原子操作类:AtomicInteger、AtomicLong、AtomicBoolean、AtomicReference4、CAS机制ABA问题.........原创 2021-04-19 17:01:08 · 4235 阅读 · 1 评论 -
JMM-Java Memory Model(Java内存模型)
1、JMM屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果。2、线程的工作内存是主内存的副本拷贝3、JMM三大特性:原子性,可见性,有序性4、JMM八种内存交互操作:lock read load use assign store write unlock5、volatile:保证线程间变量的可见性、禁止CPU进行指令重排序...原创 2022-05-30 17:33:54 · 194 阅读 · 0 评论 -
JVM-Java Virtual Machine(Java虚拟机)
1、JVM内存模型包括线程共享区域、线程私有区域。2、线程共享区域:包括堆和方法区,堆上存放对象和数组,方法区存放类的信息、静态变量和常量。3、线程私有区域:包括虚拟机栈、本地方法栈和程序计数器。4、虚拟机栈中是一个个栈帧,每个栈帧对应一个被调用的方法,本地方法栈执行的是本地方法。5、程序计数器中保存的是当前需要执行的指令地址。......原创 2022-05-30 01:23:34 · 1258 阅读 · 0 评论 -
Java并发编程概述-学习路线
并发编程解决的就是多线程访问共享变量时线程安全问题,同步机制保证线程安全。原创 2022-06-03 19:52:02 · 355 阅读 · 0 评论