演练代码如下:
class Bank
{
//定义计数器,记录存入总金额
private int sum;
//定义同步函数
public synchronized void add(int n)
{
sum = sum + n;
//打印结果
System.out.println(Thread.currentThread().getName()+"存入100,sum="+sum);
}
}
class Cus implements Runnable
{
//创建Bank对象b
private Bank b = new Bank();
//复写run方法,写入需要同时执行的代码
public void run()
{ //定义循环,每个储户存储300次
for(int x=0; x<300; x++)
{
b.add(100);
}
}
}
public class Test
{
public static void main(String[] args)
{
//穿件客户对象c
Cus c = new Cus();
//创建两个对象
Thread t1 = new Thread(c,"张三");
Thread t2 = new Thread(c,"李四");
//开启两个线程
t1.start();
t2.start();
}
}
同步函数和同步代码块:前者是锁方法 ,后者是锁对象 .
如果是多线程操作同一个对象, 那就锁对象 比如说存钱和取钱时两个方法...操作的都是同一个账户,这个时候就要锁账户对象如果说一个买票的方法 一次只能进去一个人买..那就要锁住这个方法..只让一个线程进入这个方法
|
|