需要一些帮助来计算为 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);