*
需求:
有一个银行
银行有一个金库
有2个客户同时存钱 每次存100 存三次
*/
class Bank
{
private int sum;
public synchronized void add(int n)
{
sum = sum + n;
try{Thread.sleep(10);}catch(Exception e){}
System.out.println(Thread.currentThread()+"sum:"+sum);
}
}
class Custorm implements Runnable
{
private Bank b = new Bank();
public void run()
{
for (int x = 0; x < 3; x++ )
{
b.add(100);
}
}
}
class BankDemo
{
public static void main(String[] args)
{
Custorm c = new Custorm();
Thread t1 = new Thread(c);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
}
这毕老师的线程视频章节的代码。我有个疑问,不是说Runnable 是共享同一个资源的,操作同一个run()方法吗,为什么运行后的代码会是存了6次,不应该只是存3次吗?我的理解是两个线程共同处理一个run()方法,所以只有3次,这样理解错误在哪? |