1 |
|
//---PACKAGE DECLARATION--- |
2 |
< |
package uk.ac.ukc.iscream.util; |
2 |
> |
package uk.org.iscream.util; |
3 |
|
|
4 |
|
//---IMPORTS--- |
5 |
|
import java.util.LinkedList; |
6 |
|
import java.util.NoSuchElementException; |
7 |
|
import java.util.Random; |
8 |
< |
import uk.ac.ukc.iscream.util.*; |
8 |
> |
import uk.org.iscream.util.*; |
9 |
|
|
10 |
|
/** |
11 |
|
* A Queue class designed to operate in a multi-threaded environment, with |
49 |
|
*/ |
50 |
|
public static final int DROP = 3; |
51 |
|
|
52 |
+ |
/** |
53 |
+ |
* To allow opposite lookups. |
54 |
+ |
*/ |
55 |
+ |
public static final String[] algorithms = {"RANDOM", "FIRST", "LAST", "DROP"}; |
56 |
+ |
|
57 |
|
//---STATIC METHODS--- |
58 |
|
|
59 |
|
//---CONSTRUCTORS--- |
136 |
|
throw new InvalidQueueException("Requested queue "+queue+" does not exist"); |
137 |
|
} |
138 |
|
// block if the queue is empty |
139 |
< |
if (((LinkedList) _lists.get(queue)).size() == 0) { |
140 |
< |
synchronized(((LinkedList) _lists.get(queue))) { |
139 |
> |
synchronized(((LinkedList) _lists.get(queue))) { |
140 |
> |
if (((LinkedList) _lists.get(queue)).size() == 0) { |
141 |
|
try { ((LinkedList) _lists.get(queue)).wait(); } catch(Exception e) {} |
142 |
|
} |
143 |
|
} |
206 |
|
if(_maxSize != -1) { |
207 |
|
status += " maxSize=\""+_maxSize+"\""; |
208 |
|
} |
209 |
< |
status += "</queue>"; |
209 |
> |
status += "></queue>"; |
210 |
|
return status; |
211 |
|
} |
212 |
|
|
247 |
|
* |
248 |
|
* @return An integer to be passed to the get() method. |
249 |
|
*/ |
250 |
< |
public int getQueue() { |
250 |
> |
public synchronized int getQueue() { |
251 |
|
int pos = -1; |
252 |
|
for(int i=0; i < _lists.size(); i++) { |
253 |
|
if(_lists.get(i) == null) { |
271 |
|
* |
272 |
|
* @param queue The integer identifier for the queue, given by getQueue(). |
273 |
|
*/ |
274 |
< |
public void removeQueue(int queue) { |
274 |
> |
public synchronized void removeQueue(int queue) { |
275 |
|
_lists.set(queue, null); |
276 |
|
} |
277 |
|
|
332 |
|
* Overrides the {@link java.lang.Object#toString() Object.toString()} |
333 |
|
* method to provide clean logging (every class should have this). |
334 |
|
* |
335 |
< |
* This uses the uk.ac.ukc.iscream.util.FormatName class |
335 |
> |
* This uses the uk.org.iscream.util.FormatName class |
336 |
|
* to format the toString() |
337 |
|
* |
338 |
|
* @return the name of this class and its CVS revision. |