Java - Synchronized
synchronized 함수는 자신이 포함된 객체에 lock을 겁니다.
따라서 동기화 문제를 해결하는데 가장 간단하고 확실하면서 무식한 방법입니다.
출처:
https://tourspace.tistory.com/54
Java의 동기화 Synchronized 개념 정리#1
Java의 동기화 -Synchronized 키워드의 사용Java를 프로그래밍 하다면 multi-thread로 인하여 동기화를 제어해야하는 경우가 생깁니다.그래서 흔히 Synchronized 키워드를 사용하는데요그냥 multi-thread로 동시
tourspace.tistory.com
메서드 제어자 뒤에 synchronized 키워드가 위치한 동기화 메서드는 락 객체를 지정하는 부분이 없다. 동기화 메서드는 내부적으로 자신의 객체를 락으로 사용한다. 즉, 객체 스스로 메서드 전체를 감시하는 역할을 한다.
이에 반해서 동기화 블록은 메서드 안의 특정 부분을 동기화할 수 있다. 이런 경우에 락 객체는 자기 자신 객체를 의미하는 this 키워드를 사용할 수도 있지만 다른 객체를 락으로 사용할 수 있다. 단, 락 객체가 여러 개라면 우리가 원하는 동기화 작업을 제대로 실행할 수 없다. 그래서 보통은 락 객체를 하나만 사용하는 경우가 많다. 동기화 블록을 사용하는 경우, 해당 메서드는 여러 스레드가 동시에 점유할 수 있다. 하지만 동기화된 블록에 이르면 락 객체에 의해서 모든 스레드들은 실행을 중단하고 자신의 차례가 될 때까지 대기한다.
출처:
https://ktko.tistory.com/entry/자바-synchronized에-대하여
자바 synchronized에 대하여
자바에서 프로그래밍을 한다면 Multi-Thread로 인하여 동기화를 제어해야하는 경우가 생긴다. 그 때 자바에서 제공하는 키워드인 synchronized 키워드를 사용하게 되는데, Multi-Thread 상태에서 동일한
ktko.tistory.com
@Synchronized
메소드에 사용되는 어노테이션으로 기본적으로 지원되는 synchronized 키워드보다 더 세세한 설정이 가능한 어노테이션이다. synchronized 키워드는 static 혹은 instance 단위로 락을 걸지만 @Synchronized 어노테이션은 파라미터로 입력받는 Object 단위로 락을 건다. 파라미터로 아무 것도 입력하지 않으면 어노테이션이 사용된 메소드 단위로 락을 건다.