我有两种方法可以在我的java类中并行执行。想象方法a通过传递fileA调用getList方法并获取getList方法返回的String列表,方法b通过传递fileB调用getList方法并获取getList返回的List。(这些列表将是调用者传递的相应文件的内容) )
proc = expCmp.execute()
在并行方法执行场景中,我认为这可能属于以下情况, 通过getList方法读取fileA的一半中调用b并尝试使用相同的getList方法读取fileB。
我想澄清一下,在这种情况下,JVM是否保证我们从方法a和方法b的调用中得到正确的结果?
如果不能如何处理这种情况?
答案 0 :(得分:1)
JVM
如何保证不同的线程方法调用相同的方法不受影响?
JVM
有Runtime Data Area,每个线程在启动时会创建自己的 数据区 ,这些 当线程存在时,将销毁数据区 。因此,当线程的方法执行时,它们将使用它自己的数据区,而不会影响其他线程的调用。
如果getList
会导致 side effect
,则需要lock
。
答案 1 :(得分:0)
你能尝试在getList(File)中设置某种同步机制并测试它吗?
public synchronized getList(file){}
答案 2 :(得分:0)
如果没有写入,则调用相同的方法不会影响先前的调用。为什么你认为它应该?这与JVM无关,尤其是编程。