public synchronized method
相当于
public method()
{
synchronized(this)
{
...
}
}
所以,method1 和 method2两个方法是一起同步的,如果某个thread进入了一个synchronized方法,则别的线程将不能进入该对象的所有synchronized方法。
相当于
public method()
{
synchronized(this)
{
...
}
}
所以,method1 和 method2两个方法是一起同步的,如果某个thread进入了一个synchronized方法,则别的线程将不能进入该对象的所有synchronized方法。
好像比这个
public method()
{
synchronized(this)
{
...
}
}
有效率些
{
...
}
也不行,这只能同步当前对象的线程,
你如果想几个不同的实例都排队访问,
应该写成:
synchronized(a.class) //a是你定义的类名
{
...
}
class a
{
private x;
private y;
final object o = new Object();
public void method(){
synchromized(o){
access x;
}
synchronized(this){
access x and y;
}
}
}
class a
{
private x;
private y;
final object o = new Object();
public void method(){
synchromized(o){
access x;
}
synchronized(this){
access x and y;
}
}
}