+ private Object lock = new Object();
+ private static final int limit = 40;
+
+ private void enqueue(ByteCallback bcb) {
+ synchronized(lock) {
+ try {
+ while (callbacks.size() >= limit) {
+ lock.wait(100);
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ bcb.time = System.currentTimeMillis();
+ callbacks.add(bcb);
+ }
+