法律线程行为的定义

时间:2014-09-14 11:34:46

标签: java multithreading language-lawyer

我一直在努力理解Java内存模型和多线程的多线程。 JLS 8部分的相应JLS 17.4说:

  

要确定执行中的线程t的 操作是否合法 ,我们   简单地评估线程t的实现   在单线程上下文中执行,如其余部分所定义   说明书

我强调的这句话在这种情况下意味着什么?我的意思是我无法想象执行中线程的合法非法操作。你能给出一个例子吗?

1 个答案:

答案 0 :(得分:2)

这是语言规范;它用于指导JVM编写者的程序必须表现的一件事。编写JVM的人需要知道该语言的规则是什么;语言的限制是他们实施的。因此,他们可以编写非法的代码'就规范而言。

让我们说正在编写的JVM决定做一些优化 - 它会使他们的JVM执行代码比没有优化时更快,也许比没有进行优化的其他JVM更有优势。 。他们可以做的一件事是重新排序操作,将它们移出循环或其他任何东西。但在这样做时,他们犯了一个错误,违反了规范的规则。在您引用的上下文中,该JVM代码将是非法的。