こんばんは、
このメソッドからコンテンツを取得するさまざまな URL (約 500) のリストがあります
public static String getWebContent(URL url){
// create URL, build HTTPConnection, getContent of page
}
この後、値などのコンテンツを取得する別の方法があります。現時点では、次のようにします。
List<URL> urls = new ArrayList<>();
List<String> webcontents = new ArrayList<>();
for(URL url : urls){
webcontents.add(getWebContent(url));
}
// Futher methods to extract values from the webcontents
しかし、それを行うスレッドは 1 つしかないため、実際には多くの時間がかかります。マルチスレッドにしたかったのですが、どのようにするのが最善の方法なのかわかりません。
まず、すべてのスレッドの戻り値が必要ですが、Callable
代わりに実装する必要がありRunnable
ますか?
また、異なるスレッドでメソッドを実行するにはどうすればよいですか? インデックス 0 で始まるスレッド、インデックス 50 で始まるスレッドなどがありますか? 1 つの URL を使い終わったら、フラグを true に設定しますか? それが私のやり方ですが、あまり効果的ではないと思います。最初の Web サイトに多くのコンテンツがある場合、最初のスレッドは他のスレッドよりもはるかに時間がかかる場合があります。
そして、すべてのスレッドが完了したら、データを 1 つのリストに戻すにはどうすればよいでしょうか? このような?
List<String> webcontent = new ArrayList<>();
if(!t1.isAlive() && !t2.isAlive()){
webcontent.add(t1.getData());
webcontent.add(t2.getData());
}
あなたが私の問題を理解して、私にヒントを与えてくれることを願っています:)どうもありがとう