日期:2014-05-20 浏览次数:20984 次
// 实现处理的类
public class TestStringProcessor extends QueueProcessor<String> {
public TestStringProcessor(){
super();
}
@Override
public void process(String obj) {
System.out.println("Processed by " + this.getName() + " : " + obj);
}
}
…
// 20个处理线程
ArrayList<QueueConsumer<String>> processors =
new ArrayList<QueueConsumer<String>>(20);
for (int i = 0; i < 20; i ++){
processors.add(new TestStringProcessor());
}
// 并发地从一个长度为200的队列取数据进行处理
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!");
------解决方案--------------------
线程不能让其停止,以前上学校,就说不能用stop来停止线程,如果要停止,只能用break来结束它!
让他不断的运行可以用while(true)在里面程动线程,一个死循环,线程就不会停了,里面可以加个if 条件,再满足什么条件下,就让他break;这样线程就会结束!再者,你说让线程每格一断时间,再运行,你可以用Thread.sleep(long time)方法让线程来睡眠;
再不行的话,就让隔一阵再生成一个线程,但必需要有一个激发方法,来让它创建!