线程:执行完成方法有线程,一旦执行完方法启动另一个方法

时间:2012-07-26 07:12:01

标签: java android multithreading

我必须执行2个方法

  1. await()
  2. signal()
  3. 条件是在完成方法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 ");
            }
        };
    }
    

1 个答案:

答案 0 :(得分:0)

好的,这里有很多问题:

  • 您永远不会开始Thread。添加行

    t.start();  
    

    创建Thread

  • 未从同步代码中调用wait()。在尝试执行代码时,这会给我IllegalMonitorStateException

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