Immutable 模式
java.lang.String类用于表示字符串。String类中并没有修改字符串内容的方法。也就是说,String类的实例所表示的字符串的内容绝对不会发生变化、
正因为如此,String类中的方法无需声明为synchronized。因为实例的内部状态不会发生改变,所以无论String类被多少个线程访问,也无需执行线程的互斥处理。
实例程序
类的一览表
名字 | 说明 |
---|---|
Person | 表示人的类 |
Main | 测试程序行为的类 |
PrintPersonThread | 显示Person实例的线程的类 |
Person类
1 | public final class Persion { // 声明为final,无法创建该类的子类 |
Main类
1 | public static void main(String[] args) { |
PrintPersonThread类
1 | public class PrintPersionThread extends Thread { |
实例程序的类图
字段后面添加了{ frozen }约束,是UML的标识法,表示“实例被创建且字段被初始化之后,字段的值就不会被再修改”。这对应于java中的final字段。
方法名后面添加了{ concurrent }约束,这也是UML的标识法,它明确表示“多个线程同时执行也没有关系”。这对应于Java中的“无需声明为synchronized方法”
参考
《图解Java多线程设计模式》