java并发编程
surepeng26
这个作者很懒,什么都没留下…
展开
-
java并发基础常用方法
1、线程和进程 进程等于一个资源(即内存映射表)+多个指令执行序列,当切换进程的时候我们不仅要切换指令序列,而且要切换内存映射表,但是线程之间的切换只是在同一个内存映射表之间的指令切换(在java中切换pc,虚拟机栈,本地方法栈,不切换堆和方法区),线程既保留了并发的特点,又避免了线程切换的代价 2、start和run 调用start方法会新建一个线程,让这个新建的线程去调用run方...原创 2019-07-24 15:27:50 · 99 阅读 · 0 评论 -
两个线程交替打印数字到100
1、等待唤醒机制 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * @author: surepeng * @description: * @date: 2019/07/24 **/ public class MultiThreadPrint { ...原创 2019-07-25 01:30:53 · 785 阅读 · 0 评论 -
HashMap、ConcurrentHashMap总结
HashMap 我们都知道hashmap 的底层数据结构是数组+链表的node,node的key值通过一系列hash得到一个hashcode,根据hashcode放入数组某个位置。 当这个hashcode之前不存在时,就new一个节点放入数组; 当hashcode已经存在时,这时有两种原因: 1、一种是hashcode冲突了,也就是两个不同的key算出来了一个hashcode,这时就把节点...原创 2019-08-15 01:50:55 · 112 阅读 · 0 评论 -
锁和锁的优化
jdk对锁的优化: 1、偏向锁,可以用-XX:+UseBiasedLocking参数开启偏向锁,偏向锁的意思就是当程序没有竞争时,当前线程拿到了锁,便进入偏向模式,下次又是这个线程再次申请,不许要同步操作又能拿到锁,但是如果期间有其他线程进行了锁请求,就会退出偏向模式。这种不适用于竞争特别激烈的多线程环境,因为竞争特别激烈的每次都是不同的线程来访问,反而会降低性能 2、轻量级锁 不太理解 3...原创 2019-08-11 23:24:01 · 79 阅读 · 0 评论