代码如下:
class Counter {
private static int count;
//Object lock = new Object();
public int getCount() {
synchronized(Counter.class){
return count++;
}
// synchronized(lock){
// return count++;
// }
}
}
这个类用来生成序列号,测试发现:
如果在 getCount方法上面用同步 public [color=red]synchronized[/color] int getCount() {...}当并发调用线程很多时,返回的序列号仍然会有重复。
如果自定义一个对象,在这个对象上应用同步,也会出现序列号重复问题。
只有对 Counter.class 加锁才能够达到预期的效果。
这三种方式有啥区别,线程的那些书上面的例子不都是在方法上面直接用同步么?请各位帮忙解答。