Java 如何处理同步请求?
Сan不了解如何在线程中发出同步请求,并且不阻止另一个线程中的请求。我的代码:Java 如何处理同步请求?,java,android,multithreading,Java,Android,Multithreading,Сan不了解如何在线程中发出同步请求,并且不阻止另一个线程中的请求。我的代码: for (Obj obj: objects) { Thread t = new Thread(new Runnable() { @Override public void run() { try { res = hDownloadUrl(obj.url, null); // always whait before get query from
for (Obj obj: objects) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
res = hDownloadUrl(obj.url, null); // always whait before get query from another thread
newUrl = res.getUrl();
res2 = hDownloadUrl(obj.url, null);
// ..............
} catch (IOException e) {
e.printStackTrace();
}
}
});
t.start();
}
其中hDownloadUrl:
public InputStream hDownloadUrl(String urlString, String userAgent) throws IOException {
Log.w("Helper hDownloadUrl: ", urlString);
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
if (userAgent != null){
conn.setRequestProperty("User-Agent", userAgent);
}
conn.connect();
return conn.getInputStream();
}
你能详细说明你的问题吗?“不要在另一个线程中阻止请求”是什么意思?是否要并行异步发送多个请求?如果是这样,你是如何发送第一个请求的,异步的?我有很多线程,在其他线程中发出请求(线程应该是同步的,因为我需要在请求之前获取下一个url),但我的代码不是异步的,一次只执行一个请求如何执行异步调用?请共享该代码。创建和销毁线程的成本很高。如果您的程序不断创建新线程,那么您可能可以通过使用线程池(如
java.util.concurrent.ThreadPoolExecutor
@Hermann Klecker)来提高其性能,但我向您展示了-新线程(…)