gpt4 book ai didi

java - 从带有线程的方法返回

转载 作者:行者123 更新时间:2023-12-02 07:41:13 24 4
gpt4 key购买 nike

抱歉标题令人困惑,我不知道如何用最少的语言来描述它,但基本上我想做的是从方法返回一个 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,因为线程尚未完成,我想知道如何等到线程完成后再返回东西。

最佳答案

您需要等待线程完成执行。查找 Thread.join 上的文档.

这只是实现您正在尝试的操作的一种方法。还有很多,比如ExecutorService

关于java - 从带有线程的方法返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11552786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com