【发布时间】:2018-01-14 11:32:49
【问题描述】:
这是我的类,它生成数字并添加数字 我得到一个随机数并在“求和”函数中添加返回它
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();
}
【问题讨论】:
-
Java 是按值传递的。为参数分配新值不会修改原始变量。
-
@JBNizet 这是我在学校上课的练习...我不太了解线程(特别是同步的)我真的不明白如何在我的主(总和)中添加一个变量线程中生成的数字
-
这与线程无关。如果你有一个方法
void increment(a) { a++; },并称它为increment(i),那么i的值不会改变。因为Java是按值传递的。 i 的副本被传递给 increment()。
标签: java multithreading random sum