zoukankan      html  css  js  c++  java
  • Immutable 想破坏它也没办法

    上一章讲的是线程互斥的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模式。

  • 相关阅读:
    PHP 7安装使用体验,升级PHP要谨慎
    PHP里10个鲜为人知但却非常有用的函数
    解决 PHPExcel 长数字串显示为科学计数
    linux安装jdk1.6
    虚拟机下Redhat9 网络配置问题(转)
    windows下的一些命令
    redis高级应用特征
    乐观锁的概念
    windows配置redis(转)
    redis常用命令
  • 原文地址:https://www.cnblogs.com/gaotianle/p/3307588.html
Copyright © 2011-2022 走看看