紛らわしいタイトルで申し訳ありませんが、最小限の言葉で説明する方法がわかりませんが、基本的に私がやろうとしているのは、メソッドから LinkedList を返すことです。しかし、スレッド内のメソッド内に実際のコンテンツを配置し、スレッドが完了したらデータを返したいと思います。私が使用しているコードは次のとおりです。
public static LinkedList<Result> get(final String prefix){
final LinkedList<Result> results = new LinkedList<Result>();
if(thread != null){
thread.stop();
thread = null;
}
thread = new Thread(
new Runnable(){
public void run(){
try{
URL url = new URL(String.format(URL_INFO, prefix));
URLConnection connection = url.openConnection();
connection.setReadTimeout(Timeout.TIMEOUT);
connection.setConnectTimeout(Timeout.TIMEOUT);
InputStream is = connection.getInputStream();
Scanner reader = new Scanner(is);
while(reader.hasNextLine()){
String line = reader.nextLine();
if(line != null){
if(line.contains(String.format(WORDS_INFO, prefix))){
String[] s = line.split(String.format(PREFIX_INFO, prefix));
String[] s2 = s[1].split("\">");
if(s2.length > 0){
for(int i = 1; i < s2.length; i++){
String l = s2[i];
String[] split = l.split(FINAL_SPLIT);
results.add(new Result(prefix, split[0].trim()));
}
}
break;
}
}
}
reader.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
);
thread.start();
return results;
}
スレッドは、変数セクション内で静的に定義されます。基本的にここでの問題は、スレッドが終了するのを待っていないため、空の LinkedList を返すことです。LinkedList を返す前にスレッドが終了するまで待つにはどうすればよいですか? どんな助けでも大歓迎です。ありがとう。
注: 問題は URL の読み取りとは関係ありません。問題は、スレッドがまだ終了していないために空の LinkedList が返されることです。スレッドが完了するまで何かを返す前に待機する方法を知りたいです。