Why do blocking library methods often respond to interruption by calling static interrupted() instead of instance mehtod isInterrupted()?
===

Consider the following code from [java.util.concurrent.locks.AbstractQueuedSynchronizer][1] as one of the many examples of the idea presented in the title:
 
   
    1258    public final boolean tryAcquireSharedNanos(int arg, long nanosTimeout) throws Interrupted Exception {
    1259        if (Thread.interrupted())
    1260            throw new InterruptedException();
    1261        return tryAcquireShared(arg) >= 0 ||
    1262            doAcquireSharedNanos(arg, nanosTimeout);
    1263    }

Why do most blocking library methods respond to interruption by calling the static method `Thread.interrupted()` instead of instance method `isInterrupted()` . Calling the static method also clears the interrupted status so if even the task handling code swallows the InterruptionException , there is no way for the callers to get to know about the interrupted status other than 
   
[1]:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/locks/AbstractQueuedSynchronizer.html
