多线程:如果您运行2个进程会发生什么? (x = 1,x = 2)(x = x ++)同时?

时间:2015-11-03 19:23:49

标签: java multithreading

如果同时运行2个流程x=1x=2x=x++会怎样?

1 个答案:

答案 0 :(得分:0)

基于什么时候执行的6种可能性中的任何一种。 6种可能性,因为存在阶乘(3)可能性。

e.g。代码执行的顺序可以是

1. x = 1
2. x++
3. x = 2

结果将是x = 2

或者可能是

1. x = 1
2. x = 2
3. x++

结果将是x = 3。 (我假设您的流程始终在x = 1之前执行x = 2,因为您编写它们的顺序)

请注意,如果x++在任何其他之前执行,那么它可能会导致基于x初始化的未定义行为。 绘制所有6种可能性,以查看代码可以达到的状态,这应该有助于澄清。

您可能需要查看Lamport的时钟和顺序一致性。