0

如何使一个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 接口。

4

3 回答 3

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);
      }
   }
}
于 2013-03-04T10:59:51.193 回答
0

典型的方法是放一个循环run

public void run() {
    while (!terminationCondition) {
        // Do work
    }
}

run应该对Runnable需要做的全部工作进行建模,而不仅仅是该工作的一次迭代。因此,如果它需要重复工作直到停止,您可以使用循环来完成。

于 2013-03-04T10:59:12.883 回答
0

可以在实现runnable的类的run方法里面有一个while(true){......}循环。可以将此线程标记为守护进程。

于 2013-03-04T11:37:17.587 回答