Skip to content

Instantly share code, notes, and snippets.

@tmountain
Created December 9, 2009 17:28
Show Gist options
  • Save tmountain/252615 to your computer and use it in GitHub Desktop.
Save tmountain/252615 to your computer and use it in GitHub Desktop.
import java.util.Vector;
public final class SlabThread extends Thread {
private Vector _data;
private int _chunksize = 128 * 1;
SlabThread() {
_data = new Vector();
}
public byte[] getData(int off, int len) {
int startBucket = (int) Math.floor((float) off / _chunksize);
int endBucket = (int) Math.floor((float) (off + len) / _chunksize);
int readOffset = off - (_chunksize * startBucket);
byte[] payload = new byte[len];
System.out.println("startBucket = " + String.valueOf(startBucket));
System.out.println("endBucket = " + String.valueOf(endBucket));
System.out.println("readOffset = " + String.valueOf(readOffset));
if (startBucket == endBucket) {
System.arraycopy((byte[]) _data.elementAt(startBucket), readOffset, payload, 0, len);
} else {
byte[] firstBucket = (byte[]) _data.elementAt(startBucket);
byte[] secondBucket = (byte[]) _data.elementAt(endBucket);
int firstReadLength = firstBucket.length - readOffset;
System.arraycopy(firstBucket, readOffset, payload, 0, firstReadLength);
System.arraycopy(secondBucket, 0, payload, firstReadLength, len - firstReadLength);
}
return payload;
}
public void run() {
int iterations = 0;
while (iterations < 10) {
byte[] data = new byte[_chunksize];
for (int i = 0; i < _chunksize; i++) {
data[i] = (byte) (iterations+97);
}
System.out.println("Writing vector #" + String.valueOf(iterations));
_data.addElement(data);
iterations++;
try {
Thread.sleep(1000);
} catch (InterruptedException e) { }
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment