Java并发,说一说了解哪些,volatie个synchronized的区别
volatile本质是告诉JVM当前变量在寄存器中的值是不确定的,需要从主存中读取。synchronized则是
锁定当前变量,只有当前线程可以访问该变量,其它线程被阻塞。
volatile仅能使用在变量级别,synchronized则可以使用在变量、方法。
volatile仅能实现变量修改的可见性,而synchronized则可以保证变量修改的可见性和原子性。
定义long或double 时,如果使用volatile关键字(简单的赋值与返回操作),就会获得原子性。
(常规状态下,这两个变量由于其长度,其操作不是原子的)
volatile不会造成线程阻塞,synchronized会造成线程阻塞。
使用volatile而不是synchronized的唯一安全情况是类中只有一个可变的域。
BLOCKED 和 WAIT的区别
线程的状态
中断机制,isInterrupted和interrupted的区别,哪些状态可以中断并抛出InterruptedException
intertrupte()在阻塞状态抛出异常,再补货后修改变量。
isinterrupted用来判断状态。
线程的Interrupt中断,其实只是修改线程的中断位,并不会真正停止线程。
(1)可以通过Thread的类方法interrupted检查当前线程是否中断,但是会重置标志位
(2)通过调用Thread的普通方法isInterrupted来检查中断位,不会重置标志位。
讲一讲并行和并发
两个进程之间哪些东西是独立的
线程同步的方式
一、不可变 二、互斥同步 三、非阻塞同步(CAS2. AtomicInteger。ABA)
四、无同步方案(栈封闭,线程本地存储,可重入代码
可重入锁怎么实现
单核单线程CPU是否可以运行多线程程序?多线程与CPU单线程区别(系统线程和用户线程)?
什么是线程不安全
是指不提供加锁机制保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据
两个进程之间哪些东西是独立的
原文:https://www.cnblogs.com/HHHzhihao/p/12609887.html