본문 바로가기

Development/Programming

[Java Design Patten] Immutable

상태의 변화가 없는 경우에는 synchronized를 할 필요가 없다. 여기서는 불변의 객체의 역할로 Person이 담당을 하였다.


public final class Person {

private final String name;

private final String address;

public Person (final String name, final 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 + "]";

}

}


public class PrintPersonThread extends Thread {

private Person person;

public PrintPersonThread (final Person person) {

this.person = person;

}

public void run () {

while (true) {

System.out.println(person.toString());

}

}

}


public class Main {

public static void main (final String[] args) {

final Person alice = new Person("Alice","Alaska");

new PrintPersonThread(alice).start();

new PrintPersonThread(alice).start();

new PrintPersonThread(alice).start();

}

}