求大神解答下一个小小的问题,本人刚刚开始自学
为什么会出现这种结果,第一个进程进来之后运行sum=sum+n;然后休眠,然后输出,但它的值不是还是100吗?怎么会有2个200的? 自学 菜鸟
[解决办法]
两个线程是并行的
也就是说两个线程都会运行到
然后等待10毫秒。
也就是说
sum=sum+m;运行了两次,然后等待10毫秒,然后依次输出
如果你对add加锁就可以了
[解决办法]
class Cus implements Runnable {
private Bank bank = new Bank();
@Override
public void run() {
for (int i = 0; i < 3; i++) {
synchronized (this) {// 这里需要加锁,因为你的Bank的实例被多个线程共享了,那么就涉及到多线程抢占资源的问题,应该加锁来达到同步的目的。
bank.add(100);
}
}
}
}