我有两个名为t1
和t2
的线程。它们仅添加total
整数变量。但是变量total
不在这些线程之间共享。我想在两个total
和t1
线程中使用相同的t2
变量。我该怎么办?
我的Adder
可运行类:
public class Adder implements Runnable{
int a;
int total;
public Adder(int a) {
this.a=a;
total = 0;
}
public int getTotal() {
return total;
}
@Override
public void run() {
total = total+a;
}
}
我的主班:
public class Main {
public static void main(String[] args) {
Adder adder1=new Adder(2);
Adder adder2= new Adder(7);
Thread t1= new Thread(adder1);
Thread t2= new Thread(adder2);
thread1.start();
try {
thread1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
t2.start();
try {
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(adder1.getTotal()); //prints 7 (But it should print 9)
System.out.println(adder2.getTotal()); //prints 2 (But it should print 9)
}
}
两个打印语句应该给出9,但是它们分别给出7和2。(因为总变量不被t1和t2共享)
最简单的方法是将total
static
设置为在所有Adder
实例之间共享。