Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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_Outputstream - Fatal编程技术网

理解Java中的方法同步

理解Java中的方法同步,java,outputstream,Java,Outputstream,我知道线程同步。但是在Merlin Hughes的《Java网络编程》一书中的这段代码中,写到println方法在System.out上同步。我不明白如何在System.out上同步方法 我想问的第二个问题是:println函数是一个被重写的方法,还是在这段代码中它只是一个用户定义的方法 import java.io.*; public class SimpleOut { public static void main(String[] args) throws IOExcepti

我知道线程同步。但是在Merlin Hughes的《Java网络编程》一书中的这段代码中,写到
println
方法在
System.out
上同步。我不明白如何在
System.out
上同步方法

我想问的第二个问题是:
println
函数是一个被重写的方法,还是在这段代码中它只是一个用户定义的方法

import java.io.*;

public class SimpleOut  {

    public static void main(String[] args) throws IOException {
        for (int i = 0; i < args.length; i++) {
            println (args[i]);
        }
    }

    public static void println(String msg) throws IOException {
        synchronized (System.out) {
            for (int i=0 ; i<msg.length(); i++) {
                System.out.write(msg.charAt (i) & 0xff);
            }
            System.out.write('\n');
        }
        System.out.flush();
    }

}
import java.io.*;
公共类SimpleOut{
公共静态void main(字符串[]args)引发IOException{
对于(int i=0;i对于(int i=0;i您可以在任何对象/实例上进行同步。
out
是类
java.lang.System
中声明的类变量

public final static PrintStream out

同步是在指定的“资源”~reference上进行同步的机制。System.out也是该资源。还有关于该资源的帖子链接


这也是一个很好的博客,可以让我了解java中一些更难的东西。我在有时间的时候阅读它,有很多有用的东西。

你可以通过引用在任何对象上同步-为什么你会期望
System.out
不同?你的代码中的
println
方法不能覆盖任何东西-它是静态的…是静态的system.out对象,如果是?它是谁的对象?它是什么时候创建的?我要求println使用重写方法的原因是println是一个预定义函数,请解释什么是system.out在全局可用引用上同步,可以重新分配(使用
system.setOut()
)在我看来这不是一个好主意。该方法应该使用自己的私有最终锁。@JunaidShirwani:Well
out
系统中的一个类字段
类。您将在该字段的值所引用的对象上同步。。。