Java 当外部应用程序相互阻塞时,线程是否工作?
我有两个raspberry pi从同一个路由器将内容上传到一个网页,这偶尔会使他们互相阻止访问。为了防止在java中出现这种情况,您通常会使用线程和同步、等待/通知等等——但是,当应用程序彼此不了解时,您如何做到这一点呢- 我的代码看起来是这样的,但在其他方面却与预期的一样Java 当外部应用程序相互阻塞时,线程是否工作?,java,multithreading,Java,Multithreading,我有两个raspberry pi从同一个路由器将内容上传到一个网页,这偶尔会使他们互相阻止访问。为了防止在java中出现这种情况,您通常会使用线程和同步、等待/通知等等——但是,当应用程序彼此不了解时,您如何做到这一点呢- 我的代码看起来是这样的,但在其他方面却与预期的一样 public void sendStrings(String output) { String url2 = "http://myhomepage.com"; HttpURLConnection conne
public void sendStrings(String output) {
String url2 = "http://myhomepage.com";
HttpURLConnection connection = null;
try {
URL obj = new URL(url2);
connection = (HttpURLConnection) obj.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
connection.connect();
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write(output);
writer.flush();
writer.close();
InputStream input = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
StringBuilder result = new StringBuilder();
String otherLine;
int responseCode = connection.getResponseCode();
}
catch (IOException e) {
} finally {
connection.disconnect();
}
}
他们是否使用相同的路由器并不重要。多个客户端之间的同步由服务器处理,客户端不关心它。因此我无法避免它?同一网络上的两个设备永远不应该“互相阻塞”。除非服务器很忙,否则设备的数量无关紧要。你的问题对我来说毫无意义,我认为你必须发现你真正的问题是什么。“阻塞”意味着线程*以某种方式使用同步-就像两个线程都调用obj.Lock()-一个线程开始运行,另一个线程阻塞。当两个线程不这样做时,它们就不会阻塞——结果通常是一个争用条件和不可预测的结果。路由器不参与跨设备的同步。如果在这里发生任何类型的阻塞,它将在服务器端。