-1

我必须执行 2 种方法

  1. await()
  2. signal()

条件是在完成方法执行后,await()signal()应调用该方法。

在我的情况下,应用程序正在强制关闭。

我在这里写了示例:

    private final Object lock = new Object();

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    signal();
    try {
        await();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println("Method: after await");
}

public void signal() {
    synchronized (lock) {
        System.out.println("Method before ");
        **lock.notify();**
        System.out.println("Method await after signal ");
    }
}

public void await() throws InterruptedException {
    // synchronized (lock) {


    Thread t = new Thread() {
        public void run() {
            System.out.println("Method await before wait ");
            try {
                **lock.wait();**
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                System.out.println("Method in exception ");
            }
            System.out.println("Method await after wait ");
        }
    };
}
4

1 回答 1

0

好的,这里有很多问题:

  • 你永远不会开始你的Thread. 添加行

    t.start();  
    

    创建Thread.

  • wait()不是从同步代码中调用的。这给了我一个IllegalMonitorStateException尝试执行代码的时间。

  • 您可能想在await()之前调用signal(),并在两者之间等待一秒钟左右,以确保await()首先获得锁。如果没有,程序将阻塞。

于 2012-07-26T07:37:13.020 回答