}catch(InterruptedException e){} /
public void add(int save){
try{Thread.currentThread(),都是两个400.start(),两个500之类的。这个结果有一个400,500我能理解。但是两个数没有600;
t2,本来我感觉这个程序没有线程安全方面的问题;+b;/.start()。
我想问一下?
class Bank
{
int money,所以就输出400,最后也应该是存6次啊;
}
}
class SavePerson implements Runnable
{
Bank b = new Bank();
t1,但是加了延时作用的语句之后,这是为什么,只存了一次或者两次,即使因为延时的作用.sleep(10);
Thread t2 = new Thread(s1); i<3; i++)
b;
Thread t1 = new Thread(s1);
System;
}
}
class SaveMoneyTow
{
public static void main(String[] args)
{
SavePerson s1 = new SavePerson();---",500了.money).out。为什么输出的结果里很多都没有600.getName()+"代码如下,两个线程执行run方法之后输出的两个数里没有600.println(Thread.add(100),然后往账户里面存钱;
public void run(){
for(int i=0,说明最后没存上6次;延时作用的语句
money = money + save,可能另一个线程还没有存完,一次存100存3次,定义一个银行账户类
java中线程不同步输出结果的问题
答案:2 悬赏:30
解决时间 2021-02-26 18:46
- 提问者网友:独菊痴梦
- 2021-02-26 07:27
最佳答案
- 二级知识专家网友:怪咖小青年
- 2021-02-26 08:43
了解下Java内存模型,你就知道了。解决简单,在add(int save)上加synchronize关键字就可以了
全部回答
- 1楼网友:啵啵桃汀
- 2021-02-26 09:26
把“object o=new object();”改成“static object o=new object();”
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯