Immutable:想破坏它也没有办法
简介
永恒的,不变的
设计
1。类声明为final
不允许定义它的子类,预防子类可能修改字段值
2。类成员访问变量为private
预防其他类擅自修改字段值
什么情况下使用
1。实例产生后,状态不再变化时
2。实例需要共享,而且访问很频繁时
高级应用
成对的mutable和immutable类
如String和StringBuffer
优点
不需要使用synchronized保护,性能高
可能危及类不变性操作
直接以get方法返回字段所保存的实例
将构造器的参数传入的实例,直接存在字段里
public class Main {
public static void main(String[] args) {
Person alice = new Person("Alice", "Alaska");
new PrintPersonThread(alice).start();
new PrintPersonThread(alice).start();
new PrintPersonThread(alice).start();
}
}
public final class Person {
private final String name;
private final String address;
public Person(String name, String address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public String toString() {
return "[ Person: name = " + name + ", address = " + address + " ]";
}
}
public class PrintPersonThread extends Thread {
private Person person;
public PrintPersonThread(Person person) {
this.person = person;
}
public void run() {
while (true) {
System.out.println(Thread.currentThread().getName() + " prints " + person);
}
}
}
分享到:
相关推荐
(注意,本资源附带书中源代码可供参考) 多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中...
目录: 漫谈UML Introduction 1 Java语言的线程 Introduction 2 多线程...总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B Java的内存模型 附录C Java线程的优先级 附录D 线程相关的主要API 附录E 参考文献
Java多线程模式详解 目录: 一、漫谈UML Java语言的线程 多线程的评量标准 二、 1、Single Threaded Execution ———— 能通过这座桥的,只有一个人 2、Immutable ———— 想破坏它也没办法 3、Guarded ...
记录自己学习《图解Java多线程设计模式》这本书的全部过程 本书上传的所有代码都是可以运行的,在此附上本书源码地址: 在此向本书作者和译者表示感谢 运行环境 Eclipse版本:Oxygen.2 Release (4.7.2) JDK版本:jdk...
│ 高并发编程第二阶段19讲、多线程不可变对象设计模式Immutable-上.mp4 │ 高并发编程第二阶段20讲、多线程不可变对象设计模式Immutable-下.mp4 │ 高并发编程第二阶段21讲、多线程Future设计模式详细介绍-上....
优点:不需使用synchronized保护类的属性,适用于类被多个线程共享,且有可能被频繁访问。 标准类中mutable类:StringBuffer 标准类中Immutable类:String、BigInteger、BigDecimal、Pattern、基本类型的包装类 java...
│ 高并发编程第二阶段19讲、多线程不可变对象设计模式Immutable-上.mp4 │ 高并发编程第二阶段20讲、多线程不可变对象设计模式Immutable-下.mp4 │ 高并发编程第二阶段21讲、多线程Future设计模式详细介绍-上....
总之,《Java Concurrency in Practice》是理解Java多线程编程的最佳资源之一,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。通过学习这本书,你可以掌握处理并发问题的技巧,写出更稳定、高效的Java并发...
《Java多线程编程模式实战指南》系列文章配套源码。这些文章已扩充为一本书:《Java多线程编程实战指南(设计模式篇)》,由电子工业出版社出版,当当、亚马逊、京东、互动出版网、淘宝等各大书店有售。 【样章】 ...
这种设计模式在多线程环境和安全性需求较高的场景下非常有用,因为它天然具备线程安全性和防止意外修改的特性。 线程安全:由于 Immutable List 不可变,所以在多线程环境中,多个线程可以共享同一个实例而无需担心...
5. 多线程编程:Java支持多线程编程,能够同时执行多个任务。 6. 动态可扩展性:Java具有很多有用的库和工具,能够轻松地扩展Java程序的功能。 基本Java语法包括基本类型和变量、运算符、控制流语句、数组和字符串...
Java并发编程涉及多个层次的概念和实践,从Java内存模型的基础理论到具体的并发集合类使用,每一个知识点都是构建高性能、高可靠性的多线程应用程序的关键。理解和掌握这些核心理念,能够帮助开发者避免常见的并发...
- **单例模式**:单例对象在多线程环境中只允许有一个实例,因此需要保证线程安全。 2. **检查再运行**:即“Check-Then-Act”模式,先检查条件是否满足,然后根据结果执行相应操作。这种模式通常需要与锁配合使用...
不可变对象一旦创建,其状态就不能改变,这为多线程环境提供了天然的安全性,并且可以被安全地共享。Guava的Immutable类通过严格的内部一致性检查,确保对象一旦构造完成,就不会有修改的可能,同时也优化了性能,...
《Java并发编程实践》是Java并发编程领域的一本经典著作,深入探讨了如何在多线程环境下编写高效、可靠的代码。这本书由Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowles和David Holmes等多位Java并发领域的...
9. **多线程编程(Multithreaded Programming)**:Java提供了丰富的并发工具,如`synchronized`关键字、`volatile`变量、`ThreadLocal`和`ExecutorService`等。书中将解释如何正确地同步和管理线程。 10. **设计...
5. **线程安全**:考虑到多线程环境,工具类中的方法需要考虑线程安全问题。如果方法涉及共享状态,那么它们需要被设计为线程安全的,或者通过同步机制来保证并发访问的正确性。 6. **异常处理**:为了提供良好的...
以上就是根据给定文件信息所整理出的关键Java知识点,涵盖了多线程安全、内存模型、类加载过程、状态模式、字符串处理、原始类型与包装类型的差异、异常处理、Web开发中的Servlet与CGI区别、集合类的选择与使用、EJB...
开关语句(Switch)根据表达式的值执行相应的代码块,同步(Synchronization)用于控制多线程的访问。语法(Syntax)是编程语言的规则,线程(Thread)是并发执行的程序部分。变量(Variable)存储数据,可见性...
Struts是一个基于MVC设计模式的Java Web框架,用于构建结构清晰且易于维护的Web应用程序。 21. **分布式技术有哪些优势和劣势?** 优势包括可扩展性、容错性和资源利用最大化;劣势包括网络延迟、复杂性和管理...