随笔记录-java并发编程
来源:互联网 发布:淘宝交易关闭怎么恢复 编辑:程序博客网 时间:2024/06/06 04:05
1、多线程中减少上下文切换方式:
尽量少用空闲线程,避免创建线程CAS结构编写无锁编程携程
2、锁的四种状态(从低到高),状态会随着竞争情况逐渐升级。锁可以升级不能降级
无锁状态偏向锁状态轻量级锁状态重量级锁状态
volatile 特性:
1、可见性,对于图个volatile变量的读,总能看到对这个变量最后的写入;
2、原子性,对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复合操作不具有原子性。
所以volatile 最好使用 赋值,减少使用复合操作,即只使用 volatile a = *;get set方法式原子操作
final 特性:
在对象引用为任意线程可见之前,对象的final域已经被正确初始化;
在读一个对象的final域之前,一定会先读包含这个final域的对象的引用,所以final对象肯定需要被初始化;
java许多API会声明抛出InterruptedException方法(比如 Thread.sleep),在抛出InterruptedException之前,java虚拟机会先将该线程中断标识清除,然后抛出;
wait notify notifyAll 细节
1.使用三个操作时都需要加锁
2.调用wait后,线程状态由running变为waiting,并且马上释放锁,不需要将线程执行完成;
3.notify notifyAll调用后,等待线程依旧不会从wait返回,需要调用notify notifyAll的线程释放锁以后等待线程才会返回;
java 同步器:
即锁的基本实现方式
首先获取同步状态(对于开发者来说是获取锁),如果获取锁失败,就生成一个节点,然后加入到一个同步节点队列中(该队列都是获取同步状态失败的操作,队列为FIFO,都通过自旋(死循环)判断是否正确添加到队尾中)。通过自旋一直判断自己前驱节点是否为头节点,如果前面节点是头节点,获取同步状态 如果获取失败,等待,等待头节点执行完成以后会唤醒下一个节点,进行执行。
- 随笔记录-java并发编程
- Java并发编程随笔
- java并发编程中的随笔
- 随笔分类 - Java并发编程
- 《java并发编程实战》随笔——第一章
- JAVA并发编程随笔【一】PriorityBlockingQueue优先级队列
- JAVA 并发编程随笔【七】线程安全与共享资源
- Java并发编程学习记录#1
- Java并发编程学习记录#2
- Java并发编程学习记录#3
- Java并发编程学习记录#4
- JAVA 并发编程随笔【四】Collections集合工具类(学习并发编程顺带学习)
- java 代码随笔记录
- java 随笔记录(一)
- JAVA学习随笔记录
- 【spark】编程代码,随笔记录
- 并发编程学习记录
- Java编程思想随笔
- Java中PrintWriter、BufferedWriter以及BufferredReader基本使用详解
- STS项目更正 web与jdk版本不对应等问题
- delete触发器示例
- 最新uboot的Kbuild系统 1
- Oracle 的四种连接-左外连接、右外连接、内连接、全连接
- 随笔记录-java并发编程
- java线程初探
- WebSocket 和 Socket 的区别
- 存储过程
- 算法之乐:一个算法解决3道经典二叉树面试题(深度、长度、直径)
- android volley封装及源码解析
- 2、lib7z-Memory从内存或网络解压数据(分析源码,修改源码)
- 【原创】有向图的搜索
- cocoa pods的安装与使用