方法的锁是可以设定的,如
methodA(){
synchronized(Object obj){
//方法体
}
}
表示对对象obj进行锁定,锁定本类用this,这样可以设定你想上锁的对象,而不一定两个方法就是锁定的同一个对象,如果不是对同一对象的锁,就可以同一时间同时运行。
不是,加synchronized代表多个线程访问这个方法是,只有获得锁的线程能够使用这个方法
sync不能防死锁,只能保证线程安全(同时间只有一个线程被允许访问加了sync的方法)
加入synchronized其实就是为了避免多线程引起的死锁。