校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > 并发(后序会删除)
题目

两个线程并发执行以下代码,假设a是全局变量,初始为1,那么以下输出______是可能的?

4
void foo(){
a=a+1;
printf("%d ",a);
}


A.3 2

B.2 3

C.3 3

D.2 2

解答

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

2、3情况:线程1读入值1,增加1,值2返回内存,显示2;然后,线程2读入值2,增加1,值3返回内存,显示值3。

3、2情况:根据对称性,与2、3情况相同。

2、2情况:线程1读入1后,线程2运行,读入1,然后线程1运行,增加1,值2返回内存,显示2,然后线程2运行,增加1,值2返回内存,显示2。(线程1、2可互换)

3、3情况:线程1读入1,增加1,值2返回内存,结果2显示前线程2运行,增加1,值2返回内存,显示3,然后线程1运行,从内存读入3,显示3。
C 0条回复 评论

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