【问题标题】:how to detect when a thread has completed execution in blackberry?如何在黑莓中检测线程何时完成执行?
【发布时间】:2012-10-16 07:12:56
【问题描述】:

如何检测以下代码/线程何时在 Blackberry 中完成执行:

UiApplication.getUiApplication().invokeAndWait(new Runnable() {
        public void run() {              
            EventInjector.KeyEvent inject = new EventInjector.KeyEvent  
                    (EventInjector.KeyEvent.KEY_DOWN,Characters.ENTER, 0);
                      inject.post();
                      inject.post();
        }
    }); 

我可以在该线程执行后收到通知,以便我可以启动另一个线程吗? 提前致谢。

【问题讨论】:

  • 您可以在代码中添加一个新线程:- UiApplication.getUiApplication().invokeAndWait(new Runnable() { public void run() { new Thread() { run() { // 。 .put 你要执行的代码 } }.start(); } }

标签: multithreading blackberry


【解决方案1】:

通常,join() 方法用于确定线程何时完成。调用 join() 通常会阻塞,因此请谨慎使用。

Here 是一个参考。

【讨论】:

    【解决方案2】:

    您需要一个同步块,here 是对其工作原理的简短描述。

    “睡眠”线程必须锁定一个对象,并在其上调用 wait()。 另一个线程锁定同一个对象,并发送一个 notify() 或 notifyAll() 来唤醒第一个。

    如果您显式启动线程(不是在这种情况下),您可以简单地对其调用 join(),并同步等待它完成。

    - 编辑:在线程上使用 join()

    假设你已经有一个可运行的对象:

    Thread myThread = new Thread(myRunnable);
    myThread.start();
    doOtherStuff();
    myThread.join();
    

    但如果出现问题,您将被卡在 join() 调用上,因为 BlackBerry 没有此调用的超时时间。

    【讨论】:

    • 我认为 join() 方法适合我,但我怎样才能用我的代码来实现呢?我有 3 个这样的线程,我想加入。我需要在所有运行中确认线程的运行顺序。
    • while(total>0){ 线程 t1=new Thrd1(); t1.start();试试 { t1.join(); } catch (InterruptedException e) { e.printStackTrace(); } 线程 t2=new Thrd2(); t2.start();试试 { t2.join(); } catch (InterruptedException e) { e.printStackTrace(); } 线程 t3=new Thrd3(); t3.start();试试 { t3.join(); } catch (InterruptedException e) { e.printStackTrace(); } 线程 t4=new Thrd4(); t4.start();试试 { t4.join(); } catch (InterruptedException e) { e.printStackTrace(); } --total;
    • @nikitasharma 最好将您尝试过的代码等放在原始问题中。另外,当您说“但不起作用”时,究竟会发生什么?
    • 您可以在线程上使用 join() 如果您明确启动它(即:不在 UI 线程为您执行的 Runnable 上)。
    猜你喜欢
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多