Java 无法理解同步
嘿,我正在尝试以同步的方式创建10个线程,我提出了下面的代码,但是我无法理解下面提到的部分代码。我对java还是个新手,我试着从 但我还是不明白Java 无法理解同步,java,multithreading,synchronization,Java,Multithreading,Synchronization,嘿,我正在尝试以同步的方式创建10个线程,我提出了下面的代码,但是我无法理解下面提到的部分代码。我对java还是个新手,我试着从 但我还是不明白 class question3 { public static void main(String arg[]) throws Exception { for (int i = 0; i < 11; i++) { data di = new data(); System.out
class question3 {
public static void main(String arg[]) throws Exception {
for (int i = 0; i < 11; i++) {
data di = new data();
System.out.println(di.count);
}
}
}
class item {
static int count = 0;
}
class data extends item implements Runnable {
item d = this;
Thread t;
data() {
t = new Thread(this);
t.start();
}
public void run() {
d = syn.increment(d);
}
}
class syn {
synchronized static item increment(item i) {
i.count++;
return (i);
}
}
启动线程时使用
run
函数,这是在实现Runnable
时必须覆盖的函数。调用Thread.start()
时,将调用run
函数
类syn
包含一个synchronized方法,它只是意味着每次只有一个线程可以访问它,从而使increment
函数线程安全
对象d
有一个静态变量count
,这意味着项
类(和数据
)的所有实例共享相同的计数
,因此所有线程增加相同的变量
线
d=同步增量(d)代码>基本上是count++
,但以线程安全的方式请修复您的代码缩进。“我想出了代码”-“我不确定这部分代码的作用”-您的意思是“我复制了代码”,对吗?最好问问作者它是做什么的。信息的另一个好地方是网络。但老实说,若您是java新手,那个么从。代码中有一句话:类名应该总是以大写字母开头。@Turing85我知道发生了什么,但我不明白为什么要传递对象d以及di.count是如何工作的?这与同步无关di.count
访问实例di
的字段count
(属于data
类型,从项继承)。正如我之前所说:从基础开始。这不是我要问的。我试图理解为什么需要d=syn.increment(d)
,我理解发生了什么,但我不明白的是为什么要传递对象d以及di.count如何工作?
public void run() {
d = syn.increment(d);
}
}
class syn {
synchronized static item increment(item i) {
i.count++;
return (i);
}
}