比如说下面这段代码,就是同时20个线程并行从一个队列中取数据进行处理。你可以自己控制它的start和stop。
public class TestStringProcessor extends QueueProcessor<String> {
public TestStringProcessor(){
super();
} @Override
public void process(String obj) {
try {
Thread.sleep(800);
} catch (InterruptedException e) {
// do nothing
}
System.out.println("Processed by " + this.getName() + " : " + obj);
}
}… ArrayList<QueueConsumer<String>> processors = 
new ArrayList<QueueConsumer<String>>(20);
for (int i = 0; i < 20; i ++){
processors.add(new TestStringProcessor());
}
QueueConsumerGroup<String> group = 
new QueueConsumerGroup<String>(200, processors); group.start();
for (int i = 0; i < 250; i ++){
String s = "This is a string_" + i;
try {
group.queue(s);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Queued: " + s);
}
group.stop();
System.out.println("All finished!");
javadoc请看这里:http://jabb.sourceforge.net/javadoc/net/sf/jabb/util/thread/package-summary.html