有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    否,假设两个方法都在同一个类中(并且都是static或都不是static)。只有当试图进入的线程可以获得监视器对象的控制时,才会输入synchronized方法(例如this)。由于线程已经获取了监视器,因此它可以简单地进入第二种方法,而不需要任何进一步的麻烦

  2. # 2 楼答案

    如果thread 1获取了对A的锁,并且还希望锁定BThread 2B上有一个锁,并且想要在A上也有一个锁。 这是一个僵局。 否则,一切皆有可能

  3. # 3 楼答案

    这取决于:

    • 如果这些是两个(或更多)不同对象上的同步方法
    • 如果多个线程访问这些对象
    • 如果这些对象的锁定顺序可能不同(在一种情况下为object1->;object2,而在另一种情况下为object2->;object1)

    然后是的,你可以得到死锁

    但是,如果您讨论的是同一对象上的同步方法,则不可能出现死锁:对象的监视器是可重入的:如果您已经持有监视器,则可以再次请求监视器(在同一对象上输入同步块)