CAS 一. 简介 利用锁保证线程安全会造成CPU资源浪费(例如线程调度,线程上下文切换等),考虑到锁带来的开销,引入了无锁算法CAS(Compare And Swpa,比较交换),成为整个JUC体系最核心、最基础理论。 CAS一定要volatile变量配合,这样才能保证每次拿到的变量是主内存中最新 ...
分类:
其他好文 时间:
2020-07-13 20:03:37
阅读次数:
48
再写一个关于线程安全的,很多人都喜欢讨论多线程怎么使用,什么AQS、CAS、对象监视。但是如果线程安全的基本定义没有完全搞清楚的话,多线程用起来还是有点儿可怕的。 什么是线程安全 官方一点儿的说法,多个线程要同时修改一个变量时,要保证一个变量的原子性、可见性、有序性。其实说白了就是,多个线程修改,你 ...
分类:
编程语言 时间:
2020-07-12 20:50:57
阅读次数:
62
一、HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHash ...
分类:
其他好文 时间:
2020-07-12 20:50:02
阅读次数:
55
ArrayList 底层:Object数组,非线程安全 默认容量:10,其实是0,第一次add时,才会主动去扩容 每一扩容,变为原来容量的1.5倍。10->15->22 /* */ private void grow(int minCapacity) /* */ { /* 254 */ int ol ...
分类:
其他好文 时间:
2020-07-12 18:57:47
阅读次数:
50
ThreadLocal 一. 概述 ThreadLocal(是Thread Local Variable,线程局部变量)类是Java为线程安全提供的一个工具类,代表一个线程局部变量。把数据放在ThreadLocal中可以让每个线程创建一个该变量的副本,线程间可以独立地改变自己的副本,而不会和其他线程 ...
分类:
其他好文 时间:
2020-07-12 18:54:36
阅读次数:
51
1.为什么学习rust 官网的解释如下,性能好,可靠,生产力。我的理由,想看看怎么保证内存安全与线程安全的 1. 环境搭建 去网站下载 对应的rustup-init https://forge.rust-lang.org/infra/other-installation-methods.html 然 ...
分类:
其他好文 时间:
2020-07-12 14:35:30
阅读次数:
57
在多线程的情况下,ThreadLocal提供了一个种为每个线程访问相同的变量,并且线程对变量的更新互不影响的机制。也是对象实现线程安全的一种方式。 ###ThreadLocal的实现机制 我们常用的方法有get、set和initialValue,这次将会围绕这几个方法的源码进行深入解析 get方法 ...
分类:
其他好文 时间:
2020-07-12 14:09:35
阅读次数:
50
线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共 享。Java 提供 ThreadLocal 类来支持线程局部变量,是一种实现线程安全的方 式。但是在管理环境下(如 web 服务器)使用线程局部变量的时候要特别小心, 在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要 ...
分类:
编程语言 时间:
2020-07-12 13:57:10
阅读次数:
91
初识Java Java特性和优势 简单性 面向对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 JDK、JRE、JVM JDK:Java Development Kit(Java开发工具) JRE:Java Runtime Environment(Java运行时环境) JVM:Java ...
分类:
编程语言 时间:
2020-07-11 23:03:50
阅读次数:
56
SqlSessionFactory何时创建 容器启动时创建 能否直接使用DefaultSqlSession 不能,因为该类不是线程安全的,直接用会有问题,Spring环境中使用了SqlSessionTemplate类代替 为什么SqlSessionTemplate是线程安全的:SqlSessionT ...
分类:
编程语言 时间:
2020-07-09 22:35:55
阅读次数:
69