求大神解答下一个小小的问题,本人刚刚开始自学 自学菜鸟 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 两个线程是并行的也就是说两个线程都会运行到然后等待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); } } } } 第一个进程进来之后运行sum=sum+n;此时sum=100。然后休眠;但还没有输出第二个进程进来时候运行sum=sum+n;此时sum=200.休眠,也没有输出接着第一个醒后才接着运行输出语句,但这时的sum已经是200了所以两个都是200 应该和sleep有关系吧,我也是初学者,Thread t1=new Thread(c)的时候,通过 Runnable创建了一个线程,此线程通过for循环执行3次,第一次被休眠,让出CPU,第二次到sleep也休眠,让出cpu让第一次继续执行,所以是200,后续的原理一样吧。 请教一下配置数据库连接池的问题 前辈们帮帮忙 j2se与j2ee之间有什么区别? 关于字体的小问题,大家来看一下 Socket读取数据的问题 JPanel上面加背景图的疑惑 相对路径Java(no jsp) 希望今天能解决 我的类继承JFrame,使他显示在其他窗体前面? 两个Java程序之间该如何交流是好? 请帮我解惑程序中的一些问题 byte数组转short值不对啊 初学JAVA,求大神指点。谢谢!
也就是说
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);
}
}
}
}
第二个进程进来时候运行sum=sum+n;此时sum=200.休眠,也没有输出
接着第一个醒后才接着运行输出语句,但这时的sum已经是200了
所以两个都是200