WEB开发网
开发学院软件开发Java 多线程设计模式 -- immutable 阅读

多线程设计模式 -- immutable

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示:对象 Java代码//类定义为finalpublicfinalclassPerson{//类变量定义为finalprivatefinalStringname;privatefinalStringaddress;publicPerson(Stringname,Stringaddress){this.name=name;t

对象

Java代码   

   //类定义为 final 
   public final class Person { 
 //类变量定义为 final 
     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; 
 } 
 
     //name ,address 是不能修改的,所在多线程下安全的 
 public String toString() { 
 return "[ Person: name = " + name + ", address = " + address + " ]"; 
 } 
}

线程

Java代码  

public class PrintPersonThread extends Thread { 
 private Person person; 
 
 public PrintPersonThread(Person person) { 
 this.person = person; 
 } 
 
 public void run() { 
 while (true) { 
   //将调用Person 的toString 方法 
             //当多线程情况Person的name,address是final的 不能被修改所以是线程安全 
           System.out.println(Thread.currentThread().getName() + " prints " 
   + person); 
 } 
 } 
}

Java代码   

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(); 
  } 
}

用final标示比使用锁块和syschronized效率要好

同时 Integer ,等一些基本类型的包装类 都是使用immutable 模式

Tags:线程 设计模式 immutable

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接