Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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_Oop_Static - Fatal编程技术网

Java 有人能解释一下为什么静态同步代码会返回这个结果吗?

Java 有人能解释一下为什么静态同步代码会返回这个结果吗?,java,multithreading,oop,static,Java,Multithreading,Oop,Static,为什么它只显示thread8而不显示thread1-7 问题在于: Thread8 looping Thread8 looping Thread8 looping Thread8 looping Thread8 looping 这意味着只有一个名称字段,它是静态,这意味着它在对象的所有实例之间共享。静态字段属于类,并且在该类的所有对象之间共享。就你而言 private static String name; 是单个共享字段。 在创建每个线程时,它会覆盖prev值,并且在启动所有线程之前,名称

为什么它只显示thread8而不显示thread1-7

问题在于:

Thread8 looping
Thread8 looping
Thread8 looping
Thread8 looping
Thread8 looping

这意味着只有一个
名称
字段,它是
静态
,这意味着它在对象的所有实例之间共享。

静态字段属于类,并且在该类的所有对象之间共享。就你而言

private static String name;
是单个共享字段。
在创建每个线程时,它会覆盖prev值,并且在启动所有线程之前,
名称的值为“Thread8”。因此,您可以看到它一直打印
Thread8

因为它是一个
静态
字段?请注意,java.lang.Thread已经有了一个可以使用的name属性。
private static String name;
private static String name;