【校招VIP】多线程和并发之 synchronized、volatile

12月06日 收藏 0 评论 0 java开发

【校招VIP】多线程和并发之 synchronized、volatile

考点介绍:

synchronized是Java多线程中经常使用的一个关键字。synchronized可以保证原子性、可见性、有序性。它包括两种用法:synchronized 方法和 synchronized 代码块。它可以用来给对象、方法或代码块进行加锁。volatile 是 JVM 提供的轻量级的同步机制。volatile 关键字可以保证并发编程三大特征(原子性、可见性、有序性)中的可见性和有序性,不能保证原子性。

答案详情解析和文章内容可扫下方海报二维码或点击链接即可查看!

一、考点试题

1、Volatile和Synchronized四个不同点:

解答:1 粒度不同,前者针对变量 ,后者锁对象和类

2 syn阻塞,volatile线程不阻塞......

2、synchronized这个关键字有什么作用?

解答:每个 Java 对象都有一个关联的 monitor,使用 synchronized 时 JVM 会根据使用环境找到对象的 monitor,根据 monitor 的状态进行加解锁的判断......

3、关于 volatile 的描述哪些错误的

A.能保证原子性(Atomicity)

B.能保证顺序性(Ordering)

C.能保证 volatile x=1 的原子性

D.能用来进行多线程同步

解答:正确答案是 A、B、C、D

volatile不能保证程序执行的原子性以及只能一定程度上保证有序性(能禁止指令重排序)......

4、多线程中 synchronized 锁升级的原理是什么?

解答:synchronized 锁升级原理:在锁对象的对象头里面有一个 threadid 字段,在第一次访问的时候 threadid 为空,jvm 让其持有偏向锁......

二、考点文章

1、JAVA多线程之volatile 与 synchronized 的比较

要想理解volatile关键字,得先了解下JAVA的内存模型,Java内存模型的抽象示意图如下......

2、volatile 与 synchronized 区别

 在Java中,为了保证多线程读写数据时保证数据的一致性,可以采用两种方式......

3、synchronized和ReentrantLock的区别

我们这篇文章来了解一下synchronized和ReentrantLock两个同步锁的区别......

移动端:https://m.xiaozhao.vip/dTopic/detail/1432

PC端:https://xiaozhao.vip/dTopic/detail/1432


C 0条回复 评论

帖子还没人回复快来抢沙发