자바 에서 synchronized 키워드 사용

1840 단어
자바 synchronized 키 워드 는 같은 코드 블록 에 대한 여러 스 레 드 의 접근 을 동기 화 하 는 데 사 용 됩 니 다.이불 synchronized 가 수정 한 여러 일반 구성원 방법 은 같은 대상 에 대해 같은 시간 에 한 가지 방법 만 실 행 될 수 있 습 니 다. 여러 스 레 드 가 있 으 면 다른 스 레 드 는 기 다 려 야 합 니 다.아래 의 예 를 통 해 설명 하 다.
public class Test {

    private static int counter = 0;

    public synchronized void increase() {
        counter += 1;
    }
    public synchronized void decrease() {
        counter -= 1;
    }
    public static void main(String []args) throws InterruptedException {
        ExecutorService executorService = Executors.newFixedThreadPool(4);
        Test test = new Test();
        IncreaseThread increaseThread = new IncreaseThread(test);
        DecreaseThread decreaseThread = new DecreaseThread(test);
        executorService.submit(increaseThread);
        executorService.submit(decreaseThread);
        executorService.shutdown();
        System.out.println(counter);
    }
}

그 중에서 Increase Thread 와 Decrease Thread 는 Runnable 인 터 페 이 스 를 실현 하 는 두 개의 스 레 드 로 각각 increase 와 decrease 두 가지 방법 으로 각각 100000 번 씩 conter 를 조작 합 니 다.
increase 와 decrease 두 가지 방법 이 synchronized 키 워드 를 추가 하지 않 고 수식 하면 + = 과 - = 원자 조작 이 아니 기 때문에 운행 결 과 를 예측 할 수 없 는 상황 이 발생 할 수 있 습 니 다. 0 일 수도 있 고 - 1, 2, 1 일 수도 있 습 니 다.synchronized 키 워드 를 추가 하면 increase 와 decrease 두 가지 방법 으로 counter 를 동시에 조작 할 수 없 기 때문에 실행 결 과 는 항상 0 입 니 다.

좋은 웹페이지 즐겨찾기