정적 변수를 사용하고 증가 :
public class Cls {
private static int count = 0;
private int id;
public Cls() {
id = count;
count++;
}
}
첫번째 목적은 id = 0
을 갖 등
제한id = 1
있을 것이다 번째,이 방법은 간단 하나, 하지만 많은 스레드를 사용하는 응용 프로그램을 원한다면 작동하지 않습니다.
멀티 스레딩
당신이 멀티 스레딩 컨텍스트에있는 경우, 당신은 당신이 어떤 예상되는 결과를 가지고 있는지 확인해야합니다. 몇몇 가능한 방법 :
public static synchronized void incrementCount() {
count++;
}
:
1) java.util.concurrent.atomic
에서 클래스를 사용하여 (예 AtomicInteger
)() OldCurmudgeon에 따른
2) 대신 count++
의 구조는 다음 동기화 메소드를 호출
3) 동기화를 위해 추가 개체를 사용하십시오.
private static final Object lock = new Object();
public void increment() {
synchronized(lock) {
count++;
}
}
메모리 장벽을 도입합니다. – Basilevs
@Basilevs - 예, 그렇습니다. 그것이 스레드로부터 안전합니다. – OldCurmudgeon