2、用什么关键字修饰同步方法?
用synchronized关键字修饰同步方法
线程安全的实现方式
第一种把修改数据的方法上加synchronized:
1)即有synchronized关键字修饰的方法。
由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。
第二种代码块锁:
2)同步代码块,即有synchronized关键字修饰的语句块。被该关键字修饰的语句块会自动被加上内置锁,从而实现同步。
格式:
synchronized(锁对象){
//需要同步的代码
}
线程同步注意事项
不要对线程类的所有方法都进行同步,只对那些会改变共享资源的方法进行同步。同步块越大,多线程的效率就越低。
synchronized关键字可以修饰方法,也可以修饰代码块,但不能修饰构造方法、抽象方法、成员属性等。
synchronized关键字是不能继承的。
无论synchronized关键字加在方法上还是对象上,它取得的锁都是对象,而不是把一段代码或函数当做锁。