Java多线程设计模式详解学习笔记四——Immutable

public class Main {
	public static void main(String[] args) {
		Person alice = new Person("Alice", "Alaska");
	    new PrintPeronThread(alice).start();
	    new PrintPeronThread(alice).start();
	    new PrintPeronThread(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;
	}

	@Override
	public String toString() {
		return "[Person: name: "+name+" ,address:"+address+"]";
	}
}
public class PrintPeronThread extends Thread{
	private Person person;
	
	public PrintPeronThread(Person person) {
		this.person=person;
	}
	@Override
	public void run() {
		while(true){
			System.out.println(Thread.currentThread().getName()+" prints "+person);
		}
	}
}

运行结果:

Thread-0 prints [Person: name: Alice ,address:Alaska]
Thread-0 prints [Person: name: Alice ,address:Alaska]
Thread-0 prints [Person: name: Alice ,address:Alaska]
Thread-0 prints [Person: name: Alice ,address:Alaska]
Thread-0 prints [Person: name: Alice ,address:Alaska]
Thread-0 prints [Person: name: Alice ,address:Alaska]
Thread-0 prints [Person: name: Alice ,address:Alaska]
Thread-0 prints [Person: name: Alice ,address:Alaska]
Thread-0 prints [Person: name: Alice ,address:Alaska]
Thread-0 prints [Person: name: Alice ,address:Alaska]
Thread-0 prints [Person: name: Alice ,address:Alaska]
Thread-0 prints [Person: name: Alice ,address:Alaska]

何时使用:

1.当实例产生后,状态不再变化时

Immutable参与者是一个字段值无法改变的类,也没有任何用来改变字段的方法,所有字段设置成finall,Person没有setter方法。当Immutable参与者的实例创建以后,状态就完全不再变化。

2.实例需要共享,而且访问很频繁时

Immutable Pattern的优点,在于“不需要用synchronized保护”,这样的优点是在不丧失安全性与生命性的前提下,提高程序的执行性能。

final字段:

1.实例字段:

直接在声明字段的时候就直接赋初值

class Something{
     final int value=123;
}

 
 在构造器中将值赋给字段(blank final) 

class Something{
     final int value;
     Something(){
           this.value=123; 
     }
}
2.静态变量

直接在声明字段的时候就直接赋初值

class Something{
     final static int value=123;
}



在static块(静态初始化)中将值赋给字段(blank fina)

class Something{
     static final int value;
     static{
           value=123; 
     }
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值