课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
编程开发安全问题是软件开发程序员需要长期关注的问题之一,下面我们就通过案例分析来了解一下,软件开发对象的安全发布注意事项。
很多时候我们是希望在多线程之间共享数据的,此时我们就必须确保安全的发布共享对象。
要安全的发布一个对象,对象的引用以及对象的状态对其他线程都是可见的,一个正确构造的对象可以通过以下方式安全的发布
在静态构造函数中初始化对象引用
使用volatile和AtomicReferance限定对象引用
使用final限定对象引用
将对象引用保存到有锁保护的字段中
1.不可变对象
任何线程都可以在不需要同步的情况下安全的访问不可变对象及其final字段,如果字段的引用可以改变则需要进行同步。
不可变对象在确保初始化安全的前提,可以自由的发布
有时为了确保不可变对象对于多个线程呈现一致的状态,需要使用同步不可变对象的初始化。
需要具备以上说的三个不变性限制条件。
2.隐式约定不可变对象
实际可以改变对象在发布后不会再改变状态,则此对象成为隐式约定不可变对象。
虽然任何线程都可以无需同步即可安全的访问隐式约定不可变对象,但是由于其本身还是可变的,所以其需要以安全方式进行发布。
3.可变对象
需要使用同步来确保发布和共享的安全性。
4、对象的安全共享
为了确保使用共享对象的安全性,我们需要遵循其既定的规则(例如是否是不可变对象)来确定我们访问对象的方式
不可变对象和隐式约定不可变对象可以直接由多线程并发访问。
线程封闭对象只能由创建线程持有并修改。
自己内部实现安全性的线程安全对象也可以直接由多线程访问。
一般的可变对象只能通过持有锁进行同步来实现安全共享。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼