public class testSyn {
static NeedSynchronized a = new NeedSynchronized();
public static void main(String args[]) {
for (int i = 0; i < 100; i++) {
Thread thread = new Thread() {
public void run() {
int radom = a.seletMaxApproveNo();
System.out.println(radom);
}
};
thread.start();
}
}
}
可以把生成a对象的代码写到run方法中,再测试同步不起作用,所以,同步的方法默认只能同步此类生成的一个对象,当生成多个对象时,同步就不起作用, 要使spring的bean中的某个方法成为同步的方法,需要在bean的配置文件上加:scope="singleton" 这样就能保证这个类生成的对象是单例模式.
public class NeedSynchronized {
// 为了同步加的锁
public static int maxApproveNo = 0;
private byte[] lock1 = new byte[0];
// 查询本年度最大新书核准号
public int seletMaxApproveNo() {
synchronized (lock1) {
// 查找数据库中存储的最大核准号
maxApproveNo += 1;
for (int i = 0; i < 1000000; i++) {
}
System.out.println("------------------");
return maxApproveNo;
}
}
}