검색결과 리스트
글
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
자바 프로그래밍 시 스레드 프로그래밍을 할 때 동기화의 목적으로 Synchronized를 사용하는데, 이 Synchronized를 제대로 사용하지 못하면 프로그램에 심각한 성능저하가 발생하게 된다.
Synchronized에 대해 주의점을 쓴 글이 있어 참조하여 정리하여 둔다.
public class SynchronizedTest
{
public synchronized void A()
{
System.out.println("Method A");
}
public synchronized void B()
{
System.out.println("Method B");
}
public void C()
{
System.out.println("Method C");
}
}
위와 같이 Synchronized를 사용한다면 한 스레드에서 SynchronizedTest클래스의 인스턴스의 A메소드를 사용할 때 다른 스레드에서는 A메소드만 접근 못하는 것이 아니라 인스턴스에 Synchronize가 걸려 있는 A, B메소드 모두를 진입하지 못한다.
이유는 메소드에 위에처럼 Synchronized를 거는 방식은 아래와 같이 인스턴스를 사용하여 걸기 때문이다.
public void A()
{
synchronized (this)
{
System.out.println("Method A");
}
}
그래서 복수개의 스레드에서 한 스레드가 메소드별로 접근을 제한하려면 아래와 같이 사용해야 한다.
public static synchronized void A()
{
System.out.println("Method A");
}
static을 사용하면 아래와 같은 효과이다.
public void A()
{
synchronized (SynchronizedTest.class)
{
System.out.println("Method A");
}
}
'-- JSP, SPRING' 카테고리의 다른 글
로그인 시 비밀번호 javascript 암호화 -> java 복호화 (0) | 2020.04.08 |
---|---|
자바 특수문자 사용방법 (0) | 2018.03.15 |
@PostConstruct, @PreDestroy 어노테이션 (0) | 2017.07.07 |
Java 자료형 (0) | 2017.04.06 |
[spring] insert 쿼리 후 insert_id 가져오기 (0) | 2017.04.06 |
RECENT COMMENT