代码之家  ›  专栏  ›  技术社区  ›  Lucas S.

休眠一个线程,直到在另一个线程中处理某个事件为止

  •  27
  • Lucas S.  · 技术社区  · 17 年前

    我在Android应用程序中有两个线程,一个是视图线程,另一个是工作线程。我要做的是,睡眠工作线程,直到视图线程终止对OnDraw方法的处理。

    我该怎么做?有没有等待信号或什么?

    2 回复  |  直到 7 年前
        1
  •  36
  •   Paul Brinkley    17 年前

    在两个线程之间共享java.lang.object,其唯一目的是告诉工作线程何时可以继续工作。每当工作线程到达它应该休眠的点时,它就会执行以下操作:

    stick.wait();
    

    当视图线程完成其OnDraw工作时,它将调用此:

    stick.notify();
    

    请注意,视图线程拥有对象上的监视器这一要求。在您的情况下,使用一个小的同步块执行这一点应该相当简单:

    void onDraw() {
      ...
      synchronized (stick) {
        stick.notify();
      }
    } // end onDraw()
    

    在这些方法(以及notifyall,以防万一)上,请参考javadoc for java.lang.object;它们编写得非常好。

        2
  •  2
  •   Pragati Singh    7 年前

    如果你想要一个更高级别的并发API(有障碍之类的东西),你可以试试Java 5并发API的后端,它在Java 1.3和上面工作,并且可以在Android上工作。像object.wait/notify这样的函数可以工作,但是它们可能有点简洁。

    Backport-util-concurrent