@ -89,7 +89,7 @@ public class WeakPriorityBlockingQueue<E> {
/ * *
/ * *
* get the number of elements that had been drained so far and are wai n ting
* get the number of elements that had been drained so far and are wai ting
* in a list to get enumerated with element ( )
* in a list to get enumerated with element ( )
* @return
* @return
* /
* /
@ -103,7 +103,7 @@ public class WeakPriorityBlockingQueue<E> {
* @return
* @return
* /
* /
public synchronized int sizeAvailable ( ) {
public synchronized int sizeAvailable ( ) {
return this . queue . size ( ) + this . drained . size ( ) ;
return Math . min ( this . maxsize , this . queue . size ( ) + this . drained . size ( ) ) ;
}
}
/ * *
/ * *
@ -170,7 +170,7 @@ public class WeakPriorityBlockingQueue<E> {
final Element < E > element = this . queue . first ( ) ;
final Element < E > element = this . queue . first ( ) ;
assert element ! = null ;
assert element ! = null ;
this . queue . remove ( element ) ;
this . queue . remove ( element ) ;
this. drained . add ( element ) ;
if ( this . drained . size ( ) < this . maxsize ) this. drained . add ( element ) ;
assert this . queue . size ( ) > = this . enqueued . availablePermits ( ) : "(take) queue.size() = " + this . queue . size ( ) + ", enqueued.availablePermits() = " + this . enqueued . availablePermits ( ) ;
assert this . queue . size ( ) > = this . enqueued . availablePermits ( ) : "(take) queue.size() = " + this . queue . size ( ) + ", enqueued.availablePermits() = " + this . enqueued . availablePermits ( ) ;
return element ;
return element ;
}
}
@ -289,14 +289,17 @@ public class WeakPriorityBlockingQueue<E> {
public long weight ;
public long weight ;
public E element ;
public E element ;
@Override
public long getWeight ( ) {
public long getWeight ( ) {
return this . weight ;
return this . weight ;
}
}
@Override
public E getElement ( ) {
public E getElement ( ) {
return this . element ;
return this . element ;
}
}
@Override
public boolean equals ( Element < E > o ) {
public boolean equals ( Element < E > o ) {
return this . element . equals ( o . getElement ( ) ) ;
return this . element . equals ( o . getElement ( ) ) ;
}
}
@ -308,7 +311,7 @@ public class WeakPriorityBlockingQueue<E> {
@Override
@Override
public String toString ( ) {
public String toString ( ) {
return element . toString ( ) + "/" + weight;
return this . element . toString ( ) + "/" + this . weight;
}
}
}
}
@ -323,10 +326,12 @@ public class WeakPriorityBlockingQueue<E> {
this . weight = weight ;
this . weight = weight ;
}
}
@Override
public int compare ( NaturalElement < E > o1 , NaturalElement < E > o2 ) {
public int compare ( NaturalElement < E > o1 , NaturalElement < E > o2 ) {
return o1 . compareTo ( o2 ) ;
return o1 . compareTo ( o2 ) ;
}
}
@Override
public int compareTo ( NaturalElement < E > o ) {
public int compareTo ( NaturalElement < E > o ) {
if ( this . element = = o . getElement ( ) ) return 0 ;
if ( this . element = = o . getElement ( ) ) return 0 ;
if ( this . element . equals ( o . getElement ( ) ) ) return 0 ;
if ( this . element . equals ( o . getElement ( ) ) ) return 0 ;
@ -352,10 +357,12 @@ public class WeakPriorityBlockingQueue<E> {
this . weight = weight ;
this . weight = weight ;
}
}
@Override
public int compare ( ReverseElement < E > o1 , ReverseElement < E > o2 ) {
public int compare ( ReverseElement < E > o1 , ReverseElement < E > o2 ) {
return o1 . compareTo ( o2 ) ;
return o1 . compareTo ( o2 ) ;
}
}
@Override
public int compareTo ( ReverseElement < E > o ) {
public int compareTo ( ReverseElement < E > o ) {
if ( this . element = = o . getElement ( ) ) return 0 ;
if ( this . element = = o . getElement ( ) ) return 0 ;
if ( this . element . equals ( o . getElement ( ) ) ) return 0 ;
if ( this . element . equals ( o . getElement ( ) ) ) return 0 ;