Quais são as diferenças destes itens?
public metodo(Object a) {
synchronized(a) {
int x = 0;
System.out.println(++x);
}
}
para isso:
public metodo(Object a) {
synchronized(this) {
int x = 0;
System.out.println(++x);
}
}
para isso:
synchronized public metodo(Object a) {
int x = 0;
System.out.println(++x);
}