线程何时可以输入同步方法?

让代码

我有两个让我感到困惑的问题。我不是Java专业人士

Q1。两个线程A和B同时在一个对象中命中两个不同的同步方法。他们俩都会继续吗?以下哪个选项可为上述问题提供有效的结果?

一种。是的,因为这些方法是同步的。

b。不可以,只有一种方法可以获取锁。

C。否,因为这些方法是同步的。

d。是的,命中了两个不同的线程

Q2。wait,notify和notifyAll方法不是在Thread上调用的,它们是在Object上调用的。对或错?

所罗门慢

问题1有点含糊:最有可能的是,它询问的是同一类的两个不同的实例方法,两个方法都声明为synchronized 在实例本身上,并且两个线程在同一实例上调用这些方法例如,

class Foobar {
    synchronized SomeType methodA(...) { ... }
    synchronized SomeOtherType methodB(...) { ... }
}

这就是要解释这个问题的方式,但是它的书写方式给它留下了很多的狡猾的余地。

因此,无论如何,假设我们有一个实例,foo并且线程A尝试调用foo.methodA()而线程B尝试foo.methodB()“同时”调用

将会发生以下情况:

这两个调用都将成功,但是将被序列化也就是说,methodA()调用将在methodB()调用开始之前完成,反之亦然。操作系统将不允许两个调用重叠没有更多信息,就无法判断哪个线程将首先进入。

无论哪个线程先运行,另一个线程将被阻塞,直到第一个线程完成其方法调用为止。“封锁”就像您在某个地方开车时等待红灯一样。您到达红灯,停下来直到变成绿色,然后继续前进。

我们通常不会考虑或谈论在等待互斥时线程被阻塞。在一个精心设计的程序中,没有什么比停止工作时的红灯有趣了。它唯一一次没有变得有趣的是,当有在光一个巨大的可怕的堵车,或者在编程世界里,如果互斥体是一个瓶颈(即,它有太多的竞争)。

问题2甚至更糟,因为它Thread是的子类Object可以在Thread上调用t.wait(),但这通常不是一个明智的主意,因为库本身使用用于自己的目的,并且库对这些方法的使用可能会干扰您的使用,反之亦然。t.notify()tt.wait()t.notify()

对于这个问题,我能想到的最佳答案是:“Object该类实现了wait()和notify(),并且当我们调用foo.wait()foo.notify()我们几乎总是从Object类中调用实现时,因为它对任何类都没有意义。覆盖这些方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java线程同步方法

来自分类Dev

方法同步线程问题

来自分类Dev

方法同步线程问题

来自分类Dev

线程1正在以Java同步方法1执行,然后线程2可以在Java同步方法2中执行吗?

来自分类Dev

同步线程对象的run()方法

来自分类Dev

使用多种方法进行线程同步

来自分类Dev

Java使用getState方法与线程同步

来自分类Dev

同步方法多线程应用程序

来自分类Dev

如何在方法之间同步线程?

来自分类Dev

在同步方法内部的线程中的同步块会发生什么?

来自分类Dev

线程同步?

来自分类Dev

线程同步

来自分类Dev

线程同步?

来自分类Dev

通过多线程调用静态方法-它们是否可以互相插入输入参数

来自分类Dev

可以将多个线程输入InsertDAO吗?

来自分类Dev

POSIX命名信号量可以同步线程吗?

来自分类Dev

RenderScript本地线程同步可以吗?

来自分类Dev

POSIX命名信号量可以同步线程吗?

来自分类Dev

多线程,线程同步

来自分类Dev

QSettings:sync何时同步?

来自分类Dev

实例的同步方法可以被同步语句锁定吗

来自分类Dev

在同步方法中等待异步方法而不阻塞线程

来自分类Dev

我可以使覆盖的方法同步吗?

来自分类Dev

类具有2个同步方法。.当一个线程位于第二个方法内时,另一个线程可以进入第一个方法吗?

来自分类Dev

类具有2个同步方法。.当一个线程位于第二个方法内时,另一个线程可以进入第一个方法吗?

来自分类Dev

多线程访问同一对象上的同步方法和非同步方法

来自分类Dev

两个线程通过同步方法访问队列;一个可以比另一个拥有严格的优先权吗?

来自分类Dev

Java-具有同步方法的多线程练习

来自分类Dev

应该在哪些线程方法中使用“同步”?

Related 相关文章

  1. 1

    Java线程同步方法

  2. 2

    方法同步线程问题

  3. 3

    方法同步线程问题

  4. 4

    线程1正在以Java同步方法1执行,然后线程2可以在Java同步方法2中执行吗?

  5. 5

    同步线程对象的run()方法

  6. 6

    使用多种方法进行线程同步

  7. 7

    Java使用getState方法与线程同步

  8. 8

    同步方法多线程应用程序

  9. 9

    如何在方法之间同步线程?

  10. 10

    在同步方法内部的线程中的同步块会发生什么?

  11. 11

    线程同步?

  12. 12

    线程同步

  13. 13

    线程同步?

  14. 14

    通过多线程调用静态方法-它们是否可以互相插入输入参数

  15. 15

    可以将多个线程输入InsertDAO吗?

  16. 16

    POSIX命名信号量可以同步线程吗?

  17. 17

    RenderScript本地线程同步可以吗?

  18. 18

    POSIX命名信号量可以同步线程吗?

  19. 19

    多线程,线程同步

  20. 20

    QSettings:sync何时同步?

  21. 21

    实例的同步方法可以被同步语句锁定吗

  22. 22

    在同步方法中等待异步方法而不阻塞线程

  23. 23

    我可以使覆盖的方法同步吗?

  24. 24

    类具有2个同步方法。.当一个线程位于第二个方法内时,另一个线程可以进入第一个方法吗?

  25. 25

    类具有2个同步方法。.当一个线程位于第二个方法内时,另一个线程可以进入第一个方法吗?

  26. 26

    多线程访问同一对象上的同步方法和非同步方法

  27. 27

    两个线程通过同步方法访问队列;一个可以比另一个拥有严格的优先权吗?

  28. 28

    Java-具有同步方法的多线程练习

  29. 29

    应该在哪些线程方法中使用“同步”?

热门标签

归档