摘要: 线程安全与锁优化 三、锁优化 高效并发是从JDK 5升级到JDK 6后一项重要的改进项, HotSpot虚拟机开发团队在这个版本上花费了大量的资源去实现各种锁优化技术, 如适应性自旋(Adaptive Spinning) 、 锁消除(LockElimination) 、 锁膨胀(Lock Coars 阅读全文
posted @ 2022-03-22 16:53 Mars.wang 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 二、线程安全的实现方法 了解过什么是线程安全之后, 紧接着的一个问题就是我们应该如何实现线程安全。 这听起来似乎是一件由代码如何编写来决定的事情, 不应该出现在讲解Java虚拟机的书里。 确实, 如何实现线程安全与代码编写有很大的关系, 但虚拟机提供的同步和锁机制也起到了至关重要的作用。 在本节中, 阅读全文
posted @ 2022-03-22 16:07 Mars.wang 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 线程安全 当多个线程同时访问一个对象时, 如果不用考虑这些线程在运行时环境下的调度和交替执行, 也不需要进行额外的同步, 或者在调用方进行任何其他的协调操作, 调用这个对象的行为都可以获得正确的结果, 那就称这个对象是线程安全的。 一、Java语言中的线程安全 我们已经有了线程安全的一个可操作的定义 阅读全文
posted @ 2022-03-22 15:24 Mars.wang 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 4.2 Java线程调度 线程调度是指系统为线程分配处理器使用权的过程, 调度主要方式有两种, 分别是协同式 线程调度和抢占式线程调度。 如果使用协同式调度的多线程系统, 线程的执行时间由线程本身来控制, 线程把自己的工作执行完了之后, 要主动通知系统切换到另外一个线程上去。 协同式多线程的最大好处 阅读全文
posted @ 2022-03-22 15:10 Mars.wang 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 一、java与线程 1.1 线程的实现 我们知道, 线程是比进程更轻量级的调度执行单位, 线程的引入, 可以把一个进程的资源分配和执行调度分开, 各个线程既可以共享进程资源(内存地址、 文件I/O等) , 又可以独立调度。 目前线程是Java里面进行处理器资源调度的最基本单位。 主流的操作系统都提供 阅读全文
posted @ 2022-03-22 14:05 Mars.wang 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 一、原子性、 可见性与有序性 介绍完Java内存模型的相关操作和规则后, 我们再整体回顾一下这个模型的特征。 Java内存模型是围绕着在并发过程中如何处理原子性、 可见性和有序性这三个特征来建立的, 我们逐个来看一下哪些操作实现了这三个特性。 1.原子性(Atomicity) 由Java内存模型来直 阅读全文
posted @ 2022-03-22 13:27 Mars.wang 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 一、硬件的效率与一致性 绝大多数的运算任务都不可能只靠处理器“计算”就能完成。 处理器至少要与内存交互, 如读取运算数据、存储运算结果等, 这个I/O操作就是很难消除的(无法仅靠寄存器来完成所有运算任务) 。 由于计算机的存储设备与处理器的运算速度有着几个数量级的差距, 所以现代计算机系统都不得不加 阅读全文
posted @ 2022-03-22 10:14 Mars.wang 阅读(33) 评论(0) 推荐(0) 编辑