Immutable是“不能改变“的意思。如果多线程中共享的数据是不可变的(例如String、Integer),那么无论多少线程来访问这个数据都不会对使这个数据发生改变。这是也不需要synchronized来设定临界区。
public final class Person { private String name; private String address; public Person(String name,String address){ this.name=name; this.address=address; } public String getName(){return name;}//只有访问器没有修改器 public String address(){return address;} @Override public String toString(){ return "["+name+","+address+"]"; } }
public class VisitThread extends Thread{ private Person person; public VisitThread(Person person){this.person=person;} @Override public void run(){ while(true) visit(); } private void visit(){ System.out.println(Thread.currentThread()+" visit "+person); } }
public class ImmutableTest { public static void main(String[] args){ Person p=new Person("LiLei","Beijing"); new VisitThread(p).start(); new VisitThread(p).start(); new VisitThread(p).start(); } }
运行结果:
Thread[Thread-2,5,main] visit [LiLei,Beijing]
Thread[Thread-2,5,main] visit [LiLei,Beijing]
Thread[Thread-1,5,main] visit [LiLei,Beijing]
Thread[Thread-1,5,main] visit [LiLei,Beijing]
Thread[Thread-1,5,main] visit [LiLei,Beijing]
Thread[Thread-0,5,main] visit [LiLei,Beijing]
Thread[Thread-2,5,main] visit [LiLei,Beijing]
Thread[Thread-2,5,main] visit [LiLei,Beijing]
Thread[Thread-2,5,main] visit [LiLei,Beijing]
Thread[Thread-2,5,main] visit [LiLei,Beijing]
Thread[Thread-1,5,main] visit [LiLei,Beijing]
Thread[Thread-1,5,main] visit [LiLei,Beijing]
Thread[Thread-1,5,main] visit [LiLei,Beijing]
这种模式的参与者是不可变的对象,尽管它是共享数据,但是它不会得到修改,它不需要用synchronized,能够自由被访问。这时可以将对象的字段设置为final。
如果一个类声明为final,那么它无法被继承;如果的实例方法声明为final,那么它无法被覆盖(override),如果将类方法声明为final,那么子类无法看到这个方法,如果字段声明为final,那么final字段的值只能被指定一次。通常,final字段初始化在定义时、构造器里面静态初始化块里面实现。
相关推荐
"Immutable 详解及 React 中实践" Immutable 是一种编程概念,指的是一旦创建,就不能再被更改的数据。它可以解决共享的可变状态问题,提高应用的性能和可维护性。本文将对 Immutable 的概念、实现原理、常见库和在...
在Kotlin编程语言中,`kotlinx.collections.immutable`是一个重要的库,它提供了不可变集合的实现。不可变集合是一旦创建后就不能修改的集合,这种数据结构在多线程环境、函数式编程和构建安全的数据模型时非常有用...
**前端开源库-immutable-core详解** 在前端开发领域,优化性能和提高代码可维护性是开发者不断追求的目标。为此,各种工具和库应运而生,其中“immutable-core”是一个非常重要的概念,它代表着一种不可变数据处理...
**前端开源库 Immutable.js** Immutable.js 是一个 JavaScript 库,由 Facebook 的 React 团队开发并维护,它为开发者提供了一种在前端开发中高效处理数据的方法。该库的核心概念是不可变数据,即一旦创建,数据就...
为了解决这些问题,`immutable.js` 库应运而生,它为Node.js开发引入了不可变数据集合的概念,同时也融入了函数式编程的思想。`immutable.js` 提供了一组高效、线程安全的数据结构,如列表(List)、映射(Map)、集...
它提供了一种轻量级的解决方案,对于那些不想引入更大库如Immutable.js的项目来说,是一个不错的选择。 在“immutability-util-master”这个压缩包中,可能包含了源代码、示例、测试和文档等资源,供开发者学习和...
简单介绍Immutable.js的一个ppt,主要用于技术分享,内容为imuutabe常用的数据类型和常用的基础api,还有immutable的原理、优缺点的分析。
1.Overview of Docker the company and growth 2.Overview of Docker the latest stuff (DCUS announcements) & CaaS;...4.Docker and Immutable infrastructure/Microservices working together.
Mastering Immutable.js 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Immutable Collections Library for Kotlin Immutable collection interfaces and implementation prototypes for Kotlin. For further details see the proposal. Prototype implementation is based on ...
go-immutable-radix, 在Golang中,一个不可变的基数树实现 go-immutable-radix 提供实现不可变 radix的iradix 包。 包只提供单个 Tree 实现,针对稀疏节点优化。作为一个基数树,它提供以下内容:O(k) 操作。在许多...
在IT领域,不可变对象(Immutable Object)是一种一旦创建就无法改变其状态的对象。这种特性在多线程编程、函数式编程以及数据安全等方面有着重要的应用。不可变队列(Immutable Queue)是其中的一种实现,它不允许...
dot-prop-immutable, 点prop的不可变版本,带有一些扩展名 dot-prop-immutable 点prop的不可变版本,带有一些扩展名。npm install dot-prop-immutable这个模块的动机是在不改变普通JavaScript对象的现有状态的情况
kotlinx.collections.immutable, Kotlin的不可变集合 Prototype Kotlin的不可变集合库 Kotlin的不可变集合接口和实现 Prototype 。有关详细信息,请参阅建议列表。Prototype实现基于 pcollections ( 版权 2015的作者...
Immutable.js 库在 React 项目中的应用和优化 Immutable.js 库是 JavaScript 中的一种不可变数据结构实现,旨在解决 JavaScript 中缺乏不可变数据结构的问题。通过使用 Immutable.js 库,可以在 React 项目中实现...
本项目主要利用 React 技术,结合immutable.js 与 Redux 实现了简单列表的增加功能,帮助初学者了解并学会简单使用 React 结合 Redux 及 Reducer 实现某些功能 本项目在下载后直接用 VSCode 打开即可运行,如果出现...
ToDo-react-redux-immutable, ToDo应用显示使用反应,重现和ImmutableJS的最佳实践 技巧,技巧和最佳实践,使用反应,重现和 ImmutableJS请检查文章解释逻辑> ...ToDo应用演示如何使用Red
### Immutable.js 学习入门总结 #### 一、概述 在深入探讨Immutable.js的各种功能之前,我们先来简要了解一下这个库。Immutable.js是一个用于JavaScript的不可变数据结构库,它提供了一系列的数据结构来帮助开发者...
本文将深入探讨React面试中常问到的“对Immutable的理解”这一主题。 一、什么是不可变性? 不可变性(Immutability)指的是数据一旦创建,就不能再被修改。在JavaScript中,基本类型的值(如字符串、数字和布尔值...
本文将深入探讨如何优化React应用的性能,并详细阐述immutable.js在这一过程中的必要性和应用。 首先,React的性能优化通常涉及到两个核心概念:虚拟DOM和组件的更新。虚拟DOM是一种编程概念,React使用它来减少...