1、必须要有两个或两个以上的线程
2、必须是多个线程使用同一个锁
3、每次都要对锁进行判断,并且每个线程都要判断,消耗了资源(安全门,提高安全性,开门比较繁琐)
同步的两种表现方式
同步代码块
同步函数,代码示例如下
package execisetest;
class Bank{
private int sum=0;
public synchronized void add(){
sum=sum+100;
try {
Thread.sleep(10);
} catch (Exception e) {
// TODO: handle exception
}
System.out.println(sum);
}
}
class Cus implements Runnable{
Bank b=new Bank();
public void run(){
for(int i=0;i<3;i++){
b.add();
}
}
}