这是我的班级,它生成数字并添加数字 我得到一个随机数,并添加返回"求和"功能
public class summing implements Runnable
{
int a;
public summing(int a){
this.a = a;
}
public void run()
{
add(a);
}
public void add(int a)
{
Random rand = new Random();
int n = rand.nextInt(10) + 1;
System.out.println("nmber generated:" + n);
synchronized (this)
{
a += n;
}
}
这是我的主要课程 我正在制作5个帖子,我想在这里添加随机数 sum变量,但它不起作用。
public static void main(String[] args)
{
int sum = 0;
summing sum2 = new summing(sum);
Thread t1 = new Thread(sum2);
Thread t2 = new Thread(sum2);
Thread t3 = new Thread(sum2);
Thread t4 = new Thread(sum2);
Thread t5 = new Thread(sum2);
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
答案 0 :(得分:0)
试试这个
public class Summing implements Runnable {
int a;
public Summing(int a) {
this.a = a;
}
public void run() {
addRondom();
}
public void addRondom() {
Random rand = new Random();
int n = rand.nextInt(10) + 1;
System.out.println("number generated: " + n);
synchronized (this) {
a += n;
}
}
}
然后
public static void main(String[] args) {
int base = 0;
Summing sum2 = new Summing(base);
Thread t1 = new Thread(sum2);
Thread t2 = new Thread(sum2);
Thread t3 = new Thread(sum2);
Thread t4 = new Thread(sum2);
Thread t5 = new Thread(sum2);
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
try {
t1.join();
t2.join();
t3.join();
t4.join();
t5.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("final result: " + sum2.a);
}
效果很好
number generated: 1
number generated: 3
number generated: 7
number generated: 4
number generated: 5
final result: 20
Process finished with exit code 0