Java学习总结-线程同步
线程同步时线程安全问题的解决方案。
核心思想:让线程先后依次访问共享资源,这样就可以避免出现线程安全问题。
方式一:同步代码块
作用:把共享资源的核心代码上锁,以保证线程安全。
synchronizd(对线程来说是唯一对象){ 访问共享资源的核心代码 }
注意:对于当前同时执行的线程来说,同步锁必须是同一把(同一个对象),否则会出bug。
对实例方法建议使用this作为对象。
方法二:同步方法
把访问共享资源的核心方法上锁,以保证线程安全。
修饰符 synchronizd 返回值类型 方法名称(形参列表){ 操作共享资源的代码 }
方法三:Lock锁
Lock是接口,不能直接实例化,可以采用他的实现类ReentrantLock来构建Lock对象。
Lock常用方法:
建议:锁对象使用final修饰防止篡改。
建议将释放锁的操作放到finally代码块中,来保证锁用完了,一定被释放。