Index: classlib/modules/concurrent/src/main/java/java/util/concurrent/ArrayBlockingQueue.java =================================================================== --- classlib/modules/concurrent/src/main/java/java/util/concurrent/ArrayBlockingQueue.java (revision 1036325) +++ classlib/modules/concurrent/src/main/java/java/util/concurrent/ArrayBlockingQueue.java (working copy) @@ -100,6 +100,7 @@ * Call only when holding lock. */ private E extract() { + if (count == 0 ) return null; final E[] items = this.items; E x = items[takeIndex]; items[takeIndex] = null; @@ -114,6 +115,7 @@ * Call only when holding lock. */ void removeAt(int i) { + if (count == 0) return; final E[] items = this.items; // if removing front item, just advance if (i == takeIndex) {