代码之家  ›  专栏  ›  技术社区  ›  Chris Muir

Dalvik虚拟机的同步代码是什么?

  •  0
  • Chris Muir  · 技术社区  · 12 年前

    在Android SDK文档中,标题为“使用DDMS”的页面在副标题“DDMS如何与调试器交互”下有以下注释:

    Dalvik的已知调试问题-在Dalvik虚拟机中调试应用程序应该与在其他虚拟机中一样工作。然而,当单步执行同步代码时,“当前行”光标可能会跳到方法中的最后一行执行一步。

    在这种情况下,我有两个问题:

    a) 我也不确定“同步代码”指的是什么?我们谈论的是“调试”代码还是使用“同步”关键字的代码,或者其他什么?我在页面上没有定义,而synchronized是一个通用术语,所以我不清楚限制到底在哪里。

    b) 根据“b”的答案,我怀疑我的第二个问题是“退出”同步代码意味着什么?

    如果您能帮忙解释,我们将不胜感激。

    2 回复  |  直到 12 年前
        1
  •  1
  •   Dave    12 年前

    我相信它们的意思只是“同步代码”。异步代码可能会跳到调度程序认为合适的其他线程,但同步代码应该按顺序进行。他们提到了Dalvik调试器的一个已知特性,即当它应该从一行执行到下一行执行时,它会做出一个看似莫名其妙的跳跃。这个问题实际上已经让我困惑了一两次。。。

        2
  •  0
  •   Pang Ajmal PraveeN    8 年前

    synchronized是一个可以在方法或块上使用的关键字。它在使用线程时很有帮助。

    同步方法为防止线程干扰和内存一致性错误提供了一种简单的策略:如果一个对象对多个线程可见,则对该对象变量的所有读取或写入都是通过同步方法完成的。

    http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html