如何通过实例具体分析Java String的不可变性原理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1880个文字,预计阅读时间需要8分钟。
一、原理+1、不变模式(不可变对象)+在并行软件开发现代中,同步操作似乎是必不可少的。当多线程对同一对象进行读写操作时,为确保对象数据的一致性和正确性,必须对对象进行同步。
一、原理
1、不变模式(不可变对象)
在并行软件开发过程中,同步操作似乎是必不可少的。当多线程对同一个对象进行读写操作时,为了保证对象数据的一致性和正确性,有必要对对象进行同步。而同步操作对系统性能是相当的损耗。为了能尽可能的去除这些同步操作,提高并行程序性能,可以使用一种不可改变的对象,依靠对象的不变性,可以确保其在没有同步操作的多线程环境中依然始终保持内部状态的一致性和正确性。这就是不变模式。
不变模式天生就是多线程友好的,它的核心思想是,一个对象一旦被创建,则它的内部状态将永远不会发生改变。所以,没有一个线程可以修改其内部状态和数据,同时其内部状态也绝不会自行发生改变。基于这些特性,对不变对象的多线程操作不需要进行同步控制。
同时还需要注意,不变模式和只读属性是有一定的区别的,不变模式是比读属性具有更强的一致性和不变性。对只读属性的对象而言,对象本身不能被其他线程修改,但是对象身状态却可能自行修改比如,一个对象的存活时间(对象创建时间和当前时间的时间差)是只读的,因为任何个第三方线程都不能修改这个属性,但是这是一个可变的属性,因为随着时间的推移,存活时司时刻都在发生变化。而不变模式则要求,无论出于什么原因,对象自创建后,其内部状态和数据保持绝对的稳定。
2、怎么实现不可变对象
在Java语言中,不变模式的实现很简单。
本文共计1880个文字,预计阅读时间需要8分钟。
一、原理+1、不变模式(不可变对象)+在并行软件开发现代中,同步操作似乎是必不可少的。当多线程对同一对象进行读写操作时,为确保对象数据的一致性和正确性,必须对对象进行同步。
一、原理
1、不变模式(不可变对象)
在并行软件开发过程中,同步操作似乎是必不可少的。当多线程对同一个对象进行读写操作时,为了保证对象数据的一致性和正确性,有必要对对象进行同步。而同步操作对系统性能是相当的损耗。为了能尽可能的去除这些同步操作,提高并行程序性能,可以使用一种不可改变的对象,依靠对象的不变性,可以确保其在没有同步操作的多线程环境中依然始终保持内部状态的一致性和正确性。这就是不变模式。
不变模式天生就是多线程友好的,它的核心思想是,一个对象一旦被创建,则它的内部状态将永远不会发生改变。所以,没有一个线程可以修改其内部状态和数据,同时其内部状态也绝不会自行发生改变。基于这些特性,对不变对象的多线程操作不需要进行同步控制。
同时还需要注意,不变模式和只读属性是有一定的区别的,不变模式是比读属性具有更强的一致性和不变性。对只读属性的对象而言,对象本身不能被其他线程修改,但是对象身状态却可能自行修改比如,一个对象的存活时间(对象创建时间和当前时间的时间差)是只读的,因为任何个第三方线程都不能修改这个属性,但是这是一个可变的属性,因为随着时间的推移,存活时司时刻都在发生变化。而不变模式则要求,无论出于什么原因,对象自创建后,其内部状态和数据保持绝对的稳定。
2、怎么实现不可变对象
在Java语言中,不变模式的实现很简单。

