首页 > 试题广场 >

以下多线程对int型变量x的操作,哪几个不需要进行同步( &

[单选题]
以下多线程对int型变量x的操作,哪个不需要进行同步(    )
  • x=y;
  • x++;
  • ++x;
  • x=1;
A.由于y的值不确定,所以要加锁;
B,C 两个在多线程情况下是必须要加锁的,因为他们是先被读入寄存器,然后再进行+1操作,如果没有加锁,那么可能会出现数据异常;
D 原子操作,所以不需要加锁
    原子性:指该操作不能再继续划分为更小的操作。
    Java中的原子操作包括:     
        1、除long和double之外的基本类型的赋值操作
        2、所有引用reference的赋值操作
        3、java.concurrent.Atomic.* 包中所有类的一切操作


发表于 2019-11-11 17:23:01 回复(19)
要进行读写两项操作就需要同步,d选项只需要将1的值赋给x,只进行了写操作,所以不需要同步
发表于 2020-03-06 18:36:29 回复(1)
    原子性:指该操作不能再继续划分为更小的操作。
    Java中的原子操作包括:     
        1、除long和double之外的基本类型的赋值操作
        2、所有引用reference的赋值操作
        3、java.concurrent.Atomic.* 包中所有类的一切操作
发表于 2019-09-29 11:18:14 回复(0)

A:在X86上它包含两个操作:读取y至寄存器,再把该值写入x。读y的值这个操作本身是原子的,把值写入x也是原子的,但是两者合起来不是原子操作,因为它不是不可再分的操作,所以需要进行同步

B、C:x++和++x这样的操作在多线程环境下是需要同步的。因为X86会按三条指令的形式来处理这种语句:从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x 所处的内存地址

D:x=1是原子操作,不可再分因为x是int类型,32位CPU上int占32位,在X86上由硬件直接提供了原子性支持。实际上不管有多少个线程同时执行类似x=1这样的赋值语句,x的值最终还是被赋的值(而不会出现例如某个线程只更新了x的低16位然后被阻塞,另一个线程紧接着又更新了x的低24位然后又被阻塞,从而出现x的值被损坏了的情况)


发表于 2020-10-02 10:08:13 回复(3)
x=y 在JVM中要操作三步 取y值 赋值x 刷新x
x++ ++x同上原理
发表于 2021-04-11 17:24:37 回复(0)
x=1,已经给x定死了, A.由于y的值不确定,所以要加锁; B,C 两个在多线程情况下是必须要加锁的,因为他们是先被读入寄存器,然后再进行+1操作,如果没有加锁,那么可能会出现数据异常; D 原子操作,所以不需要加锁     原子性:指该操作不能再继续划分为更小的操作。     Java中的原子操作包括:              1、除long和double之外的基本类型的赋值操作         2、所有引用reference的赋值操作         3、java.concurrent.Atomic.* 包中所有类的一切操作
编辑于 2021-11-03 22:39:07 回复(0)
很多人不知道A和D选项的区别。A的话需要先读取y的值再赋值给x,需要进行读写操作。D的话只需要将1赋值给x,进行写的操作,是不需要加锁的。
发表于 2021-12-18 12:57:56 回复(0)
我咋记得当时写360笔试的时候这倒题目是多选啊
发表于 2019-08-21 00:13:01 回复(2)
涉及变量的赋值操作不能,可能会出现指令重排,所以D
发表于 2019-09-03 14:09:21 回复(0)
D.x+1  是原子操作,所以不需要加锁??
发表于 2021-03-16 17:43:48 回复(0)
还哪几个,😒
发表于 2020-09-29 08:00:44 回复(0)
D 原子性:指该操作不能再继续划分为更小的操作。 原子操作
发表于 2023-09-27 19:31:22 回复(0)
学到了😊
发表于 2022-04-19 11:26:19 回复(0)
d不加锁如何保证可见性?
发表于 2023-06-07 20:52:36 回复(0)
A:Y值是不确定的,所以是要加锁的
BC:在多线程情况下,是要被放在暂存器中,然后再进行操作,如果没有加锁,就可能出现数据异常
D:是最小操作,原子性操作,是不能出现异常
发表于 2022-11-28 19:24:33 回复(0)
有 dl 能解释一下不加锁数据丢失是个什么情况吗 (O_O)
发表于 2022-08-22 00:05:12 回复(0)
同步要注意读操作
发表于 2022-01-30 23:35:17 回复(0)
需要进行读写操作就要进行同步操作。记住了。
发表于 2021-01-06 10:18:46 回复(0)
一个单选题为什么要问那几个
发表于 2020-12-23 10:00:47 回复(0)
只有当出现读写操作时,需要同步。 d是原子操作。 所以,这个题标记下复习
发表于 2020-09-17 08:14:10 回复(0)