ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 동기화(Synchronized)
    Java & Spring/자바 2020. 10. 20. 20:24
    반응형

    동기화

    • 자바에서 동기화(synchronized) 구현하는 방식 두 가지

      • 동기화(synchronized)

        • 여러 개의 스레드가 하나의 자원을 사용할 때, 현재 데이터를 사용하고 있는 스레드를 제외한 나머지 스레드들을 데이터에 접근할 수 없도록 막는 개념
        • synchronized 키워드를 남발하면 프로그램 성능 저하
      • 구현 방법

        • synchronized method 방법

          • 메소드 앞에 synchronized 키워드를 붙여주면 간단하게 사용 가능
          •     public synchronized myMethod(type param) {
                // ...
            }
        • synchronized block 방법

          • 파라미터에 공유할 객체를 넣어서 사용

          •     synchronized (공유 객체) {
                 // ...
            }
            public void exMethod() {
                // 메소드 안에서 활용 가능
                private Object sharedData = new Object();
                synchronized(sharedData) {
                    // ..
                }
            }

    동기와 비동기 간단 비교

    • 동기(Sync)
      • 해야하는 일을 순차적으로 진행하는 것
      • 즉, 실행과 동시에 return 값을 받는 경우
    • 비동기(Async)
      • 어떤 작업이 먼저 완료될지 모르지만, 스레드를 통해 한번에 작업을 진행하는것
      • 즉, 값이 반환되기 전까지는 blocking 되어있다.
      • 비동기 코드는 이벤트 큐나 백그라운드 스레드에 task를 위임하고, 다음 코드를 실행하기 때문에 바로 리턴값이 오지 않음
      • 분할 가능한 코드를 병렬화해서 시간을 단축하는데 용이
    반응형

    'Java & Spring > 자바' 카테고리의 다른 글

    String vs (StringBuilder vs StringBuffer) (JAVA)  (0) 2020.10.20
    Final 키워드 (JAVA)  (0) 2020.10.20
    Annotation(어노테이션)  (0) 2020.10.20
    JVM & GC (JAVA)  (0) 2020.10.20
    객체지향 프로그래밍 (OOP)  (0) 2020.10.20

    댓글

Designed by Tistory.