Java在并行执行环境中获取正确的方法返回值

时间:2015-07-07 04:51:37

标签: java parallel-processing

我有两种方法可以在我的java类中并行执行。想象方法a通过传递fileA调用getList方法并获取getList方法返回的String列表,方法b通过传递fileB调用getList方法并获取getList返回的List。(这些列表将是调用者传递的相应文件的内容) )

proc = expCmp.execute()

在并行方法执行场景中,我认为这可能属于以下情况, 通过getList方法读取fileA的一半中调用b并尝试使用相同的getList方法读取fileB。

我想澄清一下,在这种情况下,JVM是否保证我们从方法a和方法b的调用中得到正确的结果?

如果不能如何处理这种情况?

3 个答案:

答案 0 :(得分:1)

JVM如何保证不同的线程方法调用相同的方法不受影响?

JVMRuntime Data Area,每个线程在启动时会创建自己的 数据区 ,这些 当线程存在时,将销毁数据区 。因此,当线程的方法执行时,它们将使用它自己的数据区,而不会影响其他线程的调用。

如果getList会导致 side effect ,则需要lock

答案 1 :(得分:0)

你能尝试在getList(File)中设置某种同步机制并测试它吗?

public synchronized getList(file){}

答案 2 :(得分:0)

如果没有写入,则调用相同的方法不会影响先前的调用。为什么你认为它应该?这与JVM无关,尤其是编程。