高天乐 welcome you

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

上一章讲的是线程互斥的synchronized实现,这样做会影响性能,如何才能做到既不影响性能又能达到线程安全的目的呢,就是使用状态绝不会改变的类,Java中的应用就是String类。

public class ImmutableThreadTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Person p = new Person("Alice", "Alaska");
		new PrintPersonThread(p).start();
		new PrintPersonThread(p).start();
	}
}

class PrintPersonThread extends Thread{
	private Person person;
	public PrintPersonThread(Person person){
		this.person = person;
	}
	@Override
	public void run() {
		while(true){
			System.out.println(Thread.currentThread().getName() + " Prints " + person);
		}
	}
}

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;
	}
	@Override
	public String toString() {
		return "[person:name=" + name + ", address=" + address + "]";
	}
}

  

这个模式很简单,就是将对象的所有字段都设为final的,这样就只有在构造的时候初始化一次,以后都是只读状态,当一个类不需要修改对象内变量时,可以使用Immutable模式。

 

posted on 2013-09-07 17:19  高天乐  阅读(608)  评论(0编辑  收藏  举报