如何将多线程的结果放入数组列表?因为当我这样做时,我会得到 concurrentException,因为线程仍然处于活动



需要一些帮助来计算为 URL 创建的多线程,并获取响应时间大于 500 的 URL,并将这些 URL 读取到数组列表。我试图将这些 URL 添加到 arrylist 中,但 url 没有完全存储在列表中,因为仍然很少有线程处于执行状态

public class ArrayReadandThreadCreator extends Thread
{
public String s=null;
public static Thread t;
static  ArrayList<String> array1  = new ArrayList<String>();
public ArrayReadandThreadCreator(String s2)
{
this.s=s2;
}
public static void main(String[] args) throws IOException
{
String s1 = "";
//Demo.array contains list of URL's
ListIterator<String> li = Demo.array.listIterator();
{
while(li.hasNext())
{
s1 = li.next();
ArrayReadandThreadCreator at1 = newArrayReadandThreadCreator(s1);
t  = new Thread(at1);
t.start();
}
}   
}
public void run()
{           
try
{           
URL url = new URL(s);
HttpURLConnection hs = (HttpURLConnection)url.openConnection();
long res = 500;
long systime = System.currentTimeMillis();
long delaytime = System.currentTimeMillis() - res;
if(delaytime>res)
{
String s5 = url.toString();
array1.add(s5);             
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
...
List<String> result = new ArrayList<String>();
if (delaytime > res) {
    result.add(url.toString()); // this will store 20 strings inside list  
}

我只是纠正自己上面的程序。1) 在 to 数组中为任务创建了多个线程2)在所有线程结束之前,您无法在数组中获取结果3) 所以使用了 join()。并得到了预期的结果

试试这样的事情

String[] splittedContent = url.toString().split("n");
List<String> list = new ArrayList<String>(splittedContent);

相关内容

最新更新