并发编程
从并发访问引起的问题出发
__小峰
这个作者很懒,什么都没留下…
展开
-
线程join
Thread.join()方法会保证此线程执行完毕才向下走 比如 class BThread extends Thread { public BThread() { super("[BThread] Thread"); }; public void run() { String threadName = Thread.currentThread().getName(); System.out.println(threadNam..原创 2021-09-22 23:10:24 · 65 阅读 · 0 评论 -
并发编程学习笔记-问题
常见并发出现问题的解决思路: 1:无锁 ①局部变量(方法内定义变量,自然不会因为多线程调用出现问题) ②ThreadLocal 本地线程变量副本,每个线程用自己的变量副本,不会出现问题 ③CAS原子类(带Atomic前缀的类),是通过比较并置换,去保证安全的,置换前会先比较旧值,旧值相同才会改变新值 CAS原子类中,会有一个Unsafe的实例,此类能提供硬件级的cas操作,java通过使用native方法来拓...原创 2021-09-17 22:15:31 · 65 阅读 · 0 评论 -
并发编程学习-不可变模式解决并发问题
首先创建不可变类要具备的条件: 1:所有的成员变量都是由final修饰的 2:使用private修饰所有成员变量,可以防止子类及其他地方通过引用直接修改变量值 3:禁止提供修改内部状态的公开方法,比如setXX方法 4:禁止不可变类被外部继承,防止子类改变其定义的方法的行为 5:如果类中存在数组或集合,在提供给外部访问之前需要做防御性复制 public List<Integer> getData(){ ...原创 2021-09-17 22:35:33 · 119 阅读 · 0 评论