多线程
文章平均质量分 90
晚报大街-
没有比今天更年轻的时候了
展开
-
JUC、多线程环境下使用ArrayList和HashMap
JUC全称:java.util.concurrent 我们熟悉的各种集合类都是在java.util下的,比如scanner,random等等。concurrernt就是java.util下的一个子包,翻译过来就是“并发的”,其中放了并发编程(多线程)相关的组件。类似于Runnable,Runnable用来描述一个任务,描述的任务没有返回值。Callable也是用来描述一个任务,描述的任务是有返回值的。如果需要使用一个线程单独的计算出某个结果来,此时使用Callable是比较合适的。原创 2023-02-23 14:38:00 · 235 阅读 · 0 评论 -
常见的锁策略、CAS、以及synchronized原理
进行加锁的时候,首先会进入到偏向锁状态,偏向锁,并不是真正的加锁,而只是占个位置,有需要再真正加锁,没需要就算了。所以synchronized的时候并不是真正的加锁,而是先偏向锁状态,做一个标记(这个过程是非常轻量的)如果整个使用锁的过程中,都没有出现锁竞争,在synchronized执行完之后,取消偏向锁即可。锁消除指的是,编译器会智能的判定,看当前的代码是否真的需要加锁,如果这个场景不需要加锁,程序猿也加了,就会自动把锁消除。ABA的问题就在于,买手机的时候,可能买到的是新机,也有可能买到的是翻新机。原创 2023-02-21 13:07:05 · 268 阅读 · 0 评论