【问题标题】:Using getState() method on Threads - Java在线程上使用 getState() 方法 - Java
【发布时间】:2011-10-09 03:37:33
【问题描述】:

假设我们有两个线程 A、B 和一个 Mutex(共享资源)M。

我启动了A线程(a.start()),它会调用M中的同步方法并导致A 等待()。 A进入wait()后线程B (b)如何跟随A

谢谢

编辑

是否有一种类似于 join() 的方法,其中线程 b 将加入处于 WAITING 状态时启动的线程 a? (我发现,join() 会在线程结束时发生,但我不希望这种情况发生

【问题讨论】:

  • 那么线程A锁定了互斥体并调用了同步方法?有两种互斥机制还是只有一种? Object.wait 释放对象上的所有同步资源。
  • +1 - A 在 Mutex 中调用“公共同步”方法。从这个方法内部只有“wait()”(不是 threadObj.wait(),因为它将等待当前线程,即 A)。只要有 wait(),你就可以放任何代码
  • getState() 和它有什么关系?
  • @EJP 我在“new A().start()”下方尝试了 getState() 检查,但它没有执行该行。
  • 所以它与问题无关,它只是问题解决后你得到的。我建议您将标题修改为描述实际主题的内容。目前它无法帮助您获得答案。

标签: java multithreading concurrency wait


【解决方案1】:

线程“t”中的对象可以在同步块中调用等待,jvm 将管理正在运行的同步块的执行... --- 其实很简单,正在等待的对象会抓取当相反的对象产生并开始工作时锁定该线程执行....所以,简而言之,如果它是您的对象 B 将开始运行:

1) 与 A 在同一个线程中

2) 当 A 停止运行时“等待()”

3) 正在同步块中执行

【讨论】:

  • 很高兴你喜欢这个答案:我在谷歌采访中错过了这个问题,所以我永远不会忘记它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-25
  • 2015-12-27
  • 2013-08-19
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 2011-03-03
相关资源
最近更新 更多