zoukankan      html  css  js  c++  java
  • 2018-03-19面试之关于Volatile关键字,下列描述正确的是?

    (多选题)关于volatile关键字,下列描述不正确的是?

    A.用volatile修饰的变量,每次更新对其他线程都是立即可见的。

    B.对volatile变量的操作是原子性的。

    C.对volatile变量的操作不会造成阻塞。

    D.不依赖其他锁机制,多线程环境下的计数器可用volatile实现。

    错选:BCD

    错选原因:在参考了https://www.cnblogs.com/zhengbin/p/5654805.html这篇博客后,忘了题目的意思,看到其中有提到在访问Volatile变量时不会执行加锁操作,因此也就不会执行线程阻塞,因此volatile变量是一种比sychronized关键字更轻量级的同步机制。以为选择的是正确的,从而错选了C。

    正选:BD

    正选原因:一旦一个共享变量(类的成员变量,类的静态成员变量)被Volatile修饰之后,那么就具备了两层语义:

    1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个值的变量,这新值对其他线程来说是立即可见的。

    2)禁止进行指令重排序。

    volatile只提供了保证访问变量时,每次都是从内存中读取最新值,并不会使用寄存器缓存该值一一每次都会从内存中读取。而对该变量的修改,volatile并不是提供原子性的保证。

    由于及时更新,很可能导致另一线程访问最新变量值,无法跳出循环的情况

    多线程下计数器必须使用锁保护

  • 相关阅读:
    GROK解析正则表达式
    夜神模拟器和Hbuilder连接
    使用notepad++批量在每行首尾添加内容
    mybatis-plus
    laravel controller 层---数据库操作
    laravel controller 层---请求参数传递
    laravel controller 层---数据验证
    laravel model 层
    laravel 博客收藏,转载篇
    laravel 用法大全开始
  • 原文地址:https://www.cnblogs.com/kongnengjing/p/8605799.html
Copyright © 2011-2022 走看看