Java Multi Thread Synchronized
동기화(Synchronized)
둘 이상의 스레드가 공동의 자원(파일이나 메모리 블록)을 공유하는 경우, 순서를 잘 맞추어 다른 스레드가 자원을 사용하고 있는 동안 한 스레드가 절대 자원을 변경할 수 없도록 해야 합니다. 한 스레드가 파일에서 레코드를 수정하는데, 다른 스레드가 동시에 같은 레코드를 수정하면 심각한 문제가 발생할 수 있습니다. 이런 상황을 처리할 수 있는 한 방법은 관련된 스레드에 대한 동기화(Synchronization)를 이용하는 것입니다.
동기화의 목적은 여러 개의 스레드가 하나의 자원에 접근하려 할 때 주어진 순간에는 오직 하나의 스레드만이 접근 가능하도록 하는 것입니다. 동기화를 이용해 스레드의 실행을 관리할 수 있는 방법은 두 가지가 있습니다.
- 동기화 메서드 : 코드를 메서드 수준에서 관리할 수 있습니다.
- 동기화 블록 : 코드를 블록 수준에서 관리할 수 있습니다.
동기화 메서드와 동기화 블록은 모두 Syncronized를 이용하여서 구현됩니다.
동기화 사용법
// synchronized 는 어떤 객체에서도 특정 문장 블록에 대해 lock 설정을 할 수 있다.
// 블록 사용방법은 아래와 같다.
synchronized( theObject )
statement; // theObject 가 동기화된다.
synchronized( theObject )
{
statement; // theObject 가 동기화된다.
}
// statement 문장이 실행되는 동안 theObject 는 동기화된 다른 쓰레드에서 사용할 수 없다.
// 동기화된 다른 쓰레드라는 것은 위의 코드와 동일하게 synchronized 를 사용하였거나
// synchronized method를 사용한 쓰레드를 의미한다.
// synchronized method의 사용법은 아래와 같다.
class theObject{
synchronized public void method()
{
statement;
}
}
참고 자료 출처
'JAVA' 카테고리의 다른 글
Java 문자열(String) 바이트(Byte) 수 세기 (비트 연산자) (0) | 2022.12.20 |
---|---|
JAVA Windows 10 JDK, JRE 설치 경로, 버전 확인 (0) | 2022.12.14 |
Java 문자열(String) 비교 다양한 사용 방법 (0) | 2022.12.13 |
Java 문자열 빈 값 체크 4가지 방법 (null, 공백) (0) | 2022.12.13 |
Java Trim(문자열 공백 제거) 사용법 (LTrim, RTrim 구현) (0) | 2022.12.13 |
댓글