我在java中使用叉式连接池进行多任务处理。现在我遇到了一种情况:对于每一项任务,我需要点击一个url然后等待10分钟,然后再次点击另一个url来读取数据。现在的问题是,对于那些10分钟我的CPU空闲,并没有开始另一项任务(超过分叉连接池中定义的那些)。在ForkJoin池中等待(Java)
static ForkJoinPool pool = new ForkJoinPool(10);
public static void main(String[] args){
List<String> list = new ArrayList<>();
for(int i=1; i<=100; i++){
list.add("Str"+i);
}
final Tasker task = new Tasker(list);
pool.invoke(task);
public class Tasker extends RecursiveAction{
private static final long serialVersionUID = 1L;
List<String> myList;
public Tasker(List<String> checkersList) {
super();
this.myList = checkersList;
}
@Override
protected void compute() {
if(myList.size()==1){
System.out.println(myList.get(0) + "start");
//Date start = new Date();
try {
Thread.sleep(10*60*1000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(myList.get(0) + "Finished");
}
else{
List<String> temp = new ArrayList<>();
temp.add( myList.get(myList.size()-1) );
myList.remove(myList.size()-1);
Tasker left = new Tasker(myList);
Tasker right = new Tasker(temp);
left.fork();
right.compute();
left.join();
}
}
现在我该怎么做才能让CPU选择所有的任务,然后等待他们的parallaly。