-
동기화(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 -