使Java Runnable连续运行

时间:2013-03-04 10:56:47

标签: java

如何使class实现java.lang.Runnable接口连续运行而不会阻塞整个应用程序。

例如:

private void startHandler(UsbDevice d) {
    if (mLoop != null) {
        mConnectionHandler.onErrorLooperRunningAlready();
        return;
    }
    mLoop = new UsbRunnable(d);
    mUsbThread = new Thread(mLoop);
    mUsbThread.start();
}

需要让mLoop的run()方法连续运行。 UsbRunnable实现了Runnable接口。

3 个答案:

答案 0 :(得分:2)

  

如何使实现java.lang.Runnable接口的类在不阻塞整个应用程序的情况下连续运行。

你需要两件事:

  • run()方法
  • 中的循环
  • 通常通过与您的设备通信来阻止的呼叫
public class USBRunnable implements Runnable {

  public void run() {
      while (isRunning) {
          data = readFromUSBDevice();  // waits until data is available, returns the data read
          processData(data);
      }
   }
}

答案 1 :(得分:0)

典型的方法是在run

中加一个循环
public void run() {
    while (!terminationCondition) {
        // Do work
    }
}

run应该对Runnable需要做的总工作进行建模,而不仅仅是该工作的一次迭代。因此,如果它需要重复工作直到它停止,你就会使用一个循环来做到这一点。

答案 2 :(得分:0)

可以有一段时间(true){......}循环实现runnable的类的run方法。可以将此主题标记为deamon。