2、用什么关键字修饰同步方法?


用synchronized关键字修饰同步方法

线程安全的实现方式

第一种把修改数据的方法上加synchronized:

1)即有synchronized关键字修饰的方法。

由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。

第二种代码块锁:

2)同步代码块,即有synchronized关键字修饰的语句块。被该关键字修饰的语句块会自动被加上内置锁,从而实现同步。 

格式:

synchronized(锁对象){

  //需要同步的代码

}

线程同步注意事项

不要对线程类的所有方法都进行同步,只对那些会改变共享资源的方法进行同步。同步块越大,多线程的效率就越低。

synchronized关键字可以修饰方法,也可以修饰代码块,但不能修饰构造方法、抽象方法、成员属性等。

synchronized关键字是不能继承的。

无论synchronized关键字加在方法上还是对象上,它取得的锁都是对象,而不是把一段代码或函数当做锁。