Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当外部应用程序相互阻塞时,线程是否工作?_Java_Multithreading - Fatal编程技术网

Java 当外部应用程序相互阻塞时,线程是否工作?

Java 当外部应用程序相互阻塞时,线程是否工作?,java,multithreading,Java,Multithreading,我有两个raspberry pi从同一个路由器将内容上传到一个网页,这偶尔会使他们互相阻止访问。为了防止在java中出现这种情况,您通常会使用线程和同步、等待/通知等等——但是,当应用程序彼此不了解时,您如何做到这一点呢- 我的代码看起来是这样的,但在其他方面却与预期的一样 public void sendStrings(String output) { String url2 = "http://myhomepage.com"; HttpURLConnection conne

我有两个raspberry pi从同一个路由器将内容上传到一个网页,这偶尔会使他们互相阻止访问。为了防止在java中出现这种情况,您通常会使用线程和同步、等待/通知等等——但是,当应用程序彼此不了解时,您如何做到这一点呢- 我的代码看起来是这样的,但在其他方面却与预期的一样

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()-一个线程开始运行,另一个线程阻塞。当两个线程不这样做时,它们就不会阻塞——结果通常是一个争用条件和不可预测的结果。路由器不参与跨设备的同步。如果在这里发生任何类型的阻塞,它将在服务器端。