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; } }
本文介绍了一个使用不可变对象实现线程安全的例子。通过创建一个不可变的Person类,确保了对象的状态在创建后不会改变,并利用该对象在一个多线程环境中实现安全的数据共享。
5014

被折叠的 条评论
为什么被折叠?



