Safely handle interrupts during Thread.join()

Bug: 24342101

Interrupt current thread if InterruptedException is received during
Thread.join().  Also, log the interruption.

Change-Id: I452124915ea3f19610e6d4a3411d741f2f604af2
(cherry picked from commit 83461d73bc)
This commit is contained in:
Pirama Arumuga Nainar
2015-10-02 16:38:08 -07:00
parent 93db3d4bfd
commit 1078942ed8

View File

@@ -1559,15 +1559,20 @@ public class RenderScript {
mMessageThread.mRun = false;
// Wait for mMessageThread to join. Try in a loop, in case this thread gets interrupted
// during the wait.
boolean hasJoined = false;
// during the wait. If interrupted, set the "interrupted" status of the current thread.
boolean hasJoined = false, interrupted = false;
while (!hasJoined) {
try {
mMessageThread.join();
hasJoined = true;
} catch(InterruptedException e) {
} catch (InterruptedException e) {
interrupted = true;
}
}
if (interrupted) {
Log.v(LOG_TAG, "Interrupted during wait for MessageThread to join");
Thread.currentThread().interrupt();
}
nContextDestroy();