有些人可以解释/告诉我这个解决方案....这里的代码示例如下:
public static void main(String[] args) throws InterruptedException, ExecutionException {
queue = new Queue<String>();
set = new SET<String>();
ExecutorService executor = Executors.newFixedThreadPool(NO_OF_THREADS);
List<Future<List<String>>> list = new ArrayList<Future<List<String>>>();
System.out.println("enter the url");
Scanner sc=new Scanner(System.in);
String input=sc.next();
l.add(input);
queue.enqueue(input);
Callable<List<String>> worker = new SimpleCrawler(input);
Future<List<String>> submit = executor.submit(worker);
list.add(submit);
ArrayList<?> l1=(ArrayList<?>) submit.get();
Iterator<?> itr=l1.iterator();
while(itr.hasNext())
{
System.out.println(itr.next());
}
我如何再次将迭代的字符串传递给函数submit(...)。我希望将第一个迭代的字符串传递给函数,然后将迭代的值传递给该函数,依此类推.....可以解释一下这个...谢谢
答案 0 :(得分:0)
从你的问题中你不清楚你想要实现什么,但为什么不用你的迭代字符串创建一个新的SimpleCrawler
并将其传递给同一个执行者,例如。
while(itr.hasNext()) {
Callable<List<String>> nextWorker = new SimpleCrawler(itr.next().toString())
Future<List<String>> nextSubmit = executor.submit(nextWorker)
...
}