package freenet.support;
import freenet.node.PrioRunnable;
import freenet.support.io.NativeThread;
import junit.framework.TestCase;
public class SerialExecutorTest extends TestCase {
public void testBlocking() {
SerialExecutor exec = new SerialExecutor(NativeThread.NORM_PRIORITY);
exec.start(new PooledExecutor(), "test");
final MutableBoolean flag = new MutableBoolean();
exec.execute(new PrioRunnable() {
@Override
public void run() {
try {
// Do nothing
} finally {
synchronized(flag) {
flag.value = true;
flag.notifyAll();
}
}
}
@Override
public int getPriority() {
return NativeThread.NORM_PRIORITY;
}
});
synchronized(flag) {
while(!flag.value) {
try {
flag.wait();
} catch (InterruptedException e) {
// Ignore
}
}
}
}
}