多线程编程
nightwind666
这个作者很懒,什么都没留下…
展开
-
Synchronized作用以及实现原理
Synchronized作用以及实现原理 Synchronized基本原理 Synchronized是java提供的一个关键字,其作用是保证程序在执行的时候,有且只有一个线程同时在同步代码块里面执行。其实现的根本依据是JMM的先行发生原则中的管程锁定规则:一个unlock操作先行发生于后面对同一个锁的lock操作。 Synchronized的三种实现方式 修饰静态方法代码及其字节码: publ...原创 2019-10-22 11:28:57 · 394 阅读 · 0 评论 -
volatile关键字详解
volatile volatile作用简述 volatile是java自带的关键字,其作用是通过防止指令重排和缓存一致性协议,保证多线程并发下的可见性问题。指令重排是指,在不影响代码执行的最终结果前提下,为了最大化cpu利用率以及性能,将代码乱序执行。 volatile实现的原理 解决缓存一致性 确切来讲,volatile并不能保证缓存一致性,缓存一致性是通过硬件层面的缓存一致性协议保证的,例如M...原创 2019-10-22 11:22:35 · 1823 阅读 · 1 评论 -
JAVA内存模型
JMM(Java Memory Model),JAVA内存模型 1. 定义及其目的 JMM是用来屏蔽掉不同的硬件和操作系统中,内存的访问差异,以实现java程序在不同的平台下达到一致性的访问结果(参考自深入理解java虚拟机)。它的主要目的是定义程序中,各个变量的访问规则,即在虚拟机中将变量存储到内存和内存去除变量这样的底层操作(此处的变量不包括局部变量和方法参数,因为二者是线程私有的)。JMM规...原创 2019-10-22 11:16:11 · 113 阅读 · 0 评论 -
并发编程问题
并发编程问题及其解决方案,JMM概念及作用 并发编程问题 线程的安全性问题一般表现为三方面,分别为可见性,原子性和有序性。可见性是指,线程对变量的修改,其新的结果是否可以马上被其他线程所看见;原子性是指,某一系列的操作,要么全部成功执行,要么执行失败,不存在部分执行,部分未执行的情况。有序性是指,程序实际运行顺序,和程序定义的运行顺序一致。如果程序中有违反这三种情况出现,则有可能导致线程安全问题,...原创 2019-10-22 11:13:47 · 106 阅读 · 0 评论 -
Java线程状态
Java线程状态(非操作系统线程状态) java线程状态分为六种,分别是NEW,RUNNABLE,BLOCKED,WAITING,TIME_WAITING和TERMINATED,六种状态可以从Thread$State类看到具体的描述信息,个人理解的各种状态解释如下: NEW 新建状态,源码中解释为Thread state for a thread which has not yet started...原创 2019-10-22 11:06:17 · 117 阅读 · 0 评论