It depends on the implementation. 
If you use a LinkedBlockingQueue, the take() method checks with a ReentrantLock
public E take() throws InterruptedException {
    E x;
    int c = -1;
    final AtomicInteger count = this.count;
    final ReentrantLock takeLock = this.takeLock;
    takeLock.lockInterruptibly();
    ...
}
// declared as
private final ReentrantLock takeLock = new ReentrantLock(); // no fairness argument, defaults to false
The javadoc says
The constructor for this class accepts an optional fairness parameter.
  When set true, under contention, locks favor granting access to the
  longest-waiting thread. Otherwise this lock does not guarantee any
  particular access order. Programs using fair locks accessed by many
  threads may display lower overall throughput (i.e., are slower; often
  much slower) than those using the default setting, but have smaller
  variances in times to obtain locks and guarantee lack of starvation.
  Note however, that fairness of locks does not guarantee fairness of
  thread scheduling. Thus, one of many threads using a fair lock may
  obtain it multiple times in succession while other active threads are
  not progressing and not currently holding the lock. Also note that the
  untimed tryLock method does not honor the fairness setting. It will
  succeed if the lock is available even if other threads are waiting.