synchronized 을 어떻게 하면 잘 사용을 할까?
아래와 같이 3가지 경우가 있는데
그냥 그때그때 상항에 맞게 사용을 하면 될 것 같아.
난 주로 incrementCounter3()을 많이 사용하게 될 것 같아.
아래 코드로 단순 비교를 했을 때
3 > 2 > 1 순으로 빠르다.
코드가 복잡하면 또 어떻게 될지 모르겠다.
private int counter = 0;
public synchronized void incrementCounter1() {
counter++;
}
public void incrementCounter2() {
synchronized (this) {
counter++;
}
}
private final Object lock = new Object();
public void incrementCounter3() {
synchronized (lock) {
counter++;
}
}