我的Java中有一个相当持久的命令;比方说,平均运行时间为20秒。这是对Tesseract OCR库的调用,该库在图像上运行其OCR算法。
String recognizedText = baseApi.getUTF8Text();
我将它封装在Runnable中,这样它就不会导致UI线程挂起,但我也希望用户能够通过按下按钮来取消OCR。
理想情况下,我希望它能够运行
baseApi.end()
一旦按下按钮,但是我没有看到如何使用myThread.interrupt这样做,因为我无法看到检查Thread.currentThread()。isInterrupted()。我可以在
中封装baseApi.getUTF8Text()调用while (!Thread.currentThread().isInterrupted()) {
...
}
阻止,但由于线程只需在baseApi.getUTF8Text()上花费20秒,它甚至不会注意到被中断的标志被设置为true,直到它完成OCR算法为止。
有没有办法中断/停止这个线程而不需要检查中断的标志,或者某种方式这样做不会挂起等待baseApi.getUTF8Text()完成?如果我在这里不清楚,请告诉我。
全部谢谢!