JUC并发编程(9)——不可变设计和final

一、介绍

  在并发编程中,主要就是处理共享资源的互斥访问。可能会采用加锁来保证并发安全,如synchronized关键字,Lock锁。也可能采用乐观锁的cas保证并发安全。
  当共享资源不可更改时,多个线程间并发读取共享资源就不会存在线上安全问题,例如String类就是利用不可变类成为线程安全的类的。
  不可变对象(Immutable Object)的定义为:对象一旦被创建后,对象所有的状态及属性在其生命周期内不会发生任何变化。

二、如何创建一个不可变类

1)所有的成员变量必须是private
2)最好用final修饰(非必须)
3)不提供能修改原有状态的方法。即使提供,也应该是新创建一个对象,然后再新创建的对象上进行修改并返回新对象
4)get方法不能对外泄露this引用以及成员变量的引用
5)不允许类被继承(非必须)
6)通过构造器初始化所有成员变量,引用类型的成员变量必须进行深拷贝

三、final关键字

final可以修饰类、方法和变量(包括成员变量和局部变量)

1.修饰类

final修饰一个类,表示这个类不能被继承。并且final类中所有的成员方法都会被隐式地指定为final方法。

2.修饰方法

final修饰的方法不能被子类所重写,子类不能够存在和父类同名同参的方法。

2.修饰变量

final成员变量表示常量。当修饰基本数据类型时,表示该基本数据类型的值一旦初始化不能发生改变。修饰引用类型时,表示初始化后便不能指向其他对象了,但是该引用指向的对象内容可以改变。
final修饰的成员变量,有两种初始化方法。一种是在变量声明的时候初始化;第二种是在构造函数中初始化。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值