1 10 package org.mmbase.util; 11 12 import java.util.*; 13 14 24 public class Queue { 25 26 29 public static int DEFAULT_QUEUE_SIZE = 32; 30 31 35 public static int DEFAULT_APPEND_TIMEOUT = 0; 36 37 41 public static int DEFAULT_GET_TIMEOUT = 0; 42 43 47 public int appendTimeoutTime; 48 52 public int getTimeoutTime; 53 54 56 60 QueueElement head; 61 65 QueueElement tail; 66 67 70 int len = 0; 71 72 76 private int queuesize; 77 78 80 public Vector items; 81 int flip = 0; 82 long get1,get2; 83 84 88 private int first; private int count; private int maxcount; 92 100 public Queue() { 101 this(DEFAULT_QUEUE_SIZE, DEFAULT_APPEND_TIMEOUT, DEFAULT_GET_TIMEOUT); 102 } 103 104 113 public Queue(int size) { 114 this(size, DEFAULT_APPEND_TIMEOUT, DEFAULT_GET_TIMEOUT); 115 } 116 117 130 public Queue(int size, int appendTimeout, int getTimeout) { 131 132 appendTimeoutTime = appendTimeout; 134 getTimeoutTime = getTimeout; 135 136 queuesize = size; items = new Vector(queuesize); 138 139 first = count = 0; 140 maxcount = size; } 142 143 154 public void newQueue(int size, int appendTimeout, int getTimeout) { 155 156 appendTimeoutTime = appendTimeout; 157 getTimeoutTime = getTimeout; 158 159 queuesize = size; items = new Vector(queuesize); 161 162 first = count = 0; 163 maxcount = size; } 165 166 169 public int queueSize() { 170 return queuesize; 171 } 172 173 176 public int count() { 177 return len; 179 } 180 181 189 public synchronized void append(Object item) { 190 QueueElement p = new QueueElement(); 193 p.obj = item; 194 195 if (tail == null) { 196 head = p; 197 } else { 198 tail.next = p; 199 } 200 p.next = null; 201 tail = p; 202 len++; 203 flip++; 204 if (flip > 99) { 205 flip = 0; 206 } 207 notify(); } 209 210 218 public synchronized Object get() throws InterruptedException { 219 while(head == null) { 221 wait(); 222 } 223 QueueElement p = head; 227 head = head.next; 228 if (head == null) { 229 tail = null; 230 } 231 len--; 232 return p.obj; 233 } 234 235 247 public void appendTimeout() { 248 } 250 251 258 public void getTimeout() { 259 } 261 262 271 272 public synchronized void resize(int newsize) { 273 300 queuesize = newsize; 301 maxcount = newsize; 302 } 303 304 } 305 | Popular Tags |