能否用形象的语言说一下.例如:样用synchronized加上的语句块:
synchronized(xlock) {}
,这种是不是表示对xlock这个资源进行同步?
synchronized(this) {}
,是不是表示对当前对象进行同步?还有在网上文章中看到这样一段话:
若将线程类的方法 run() 声明为 synchronized ,由于在线程的整个生命期内它一直在运行,因此将导致它对本类任何 synchronized 方法的调用都永远不会成功。
非常不理解是什么意思!!!!方法run()加上synchronized 表示是对哪个资源上了锁?,为什么他不能调用本类的synchronized 方法???
synchronized(xlock) {}
,这种是不是表示对xlock这个资源进行同步?
synchronized(this) {}
,是不是表示对当前对象进行同步?还有在网上文章中看到这样一段话:
若将线程类的方法 run() 声明为 synchronized ,由于在线程的整个生命期内它一直在运行,因此将导致它对本类任何 synchronized 方法的调用都永远不会成功。
非常不理解是什么意思!!!!方法run()加上synchronized 表示是对哪个资源上了锁?,为什么他不能调用本类的synchronized 方法???
}
表示要想执行这个代码块,就先得获得obj对象的锁;在方法前面声明synchronized,表示要想执行这个方法,就得先获得这个类对象的锁;所以说,在方法前声明synchronized的性能代价很大,极端的情况,如果synchronized方法是个无限循环,那么它它它永远不会释放这个类对象的锁,也就不能调用该对象的其它任何synchronized方法。
但是如果出现死锁问题就over了