외부 사용을 위해 스레드로부터 안전한 API를 제공하는 것이 하나의 ClassA라고 가정합니다. 일부 ClassA API는 일부 논리를 수행하기 위해 다른 ClassB의 메소드를 호출해야합니다 (ClassB의 메소드가 상태 비 저장 및 스레드 안전하다고 가정). 그러나 ClassB와 ClassA는 비즈니스 논리로 인해 단일 클래스로 병합 할 수 없습니다. 예를 들어 다음 코드 스 니펫과 같습니다. 이것을 달성하는 더 좋은 방법이 있습니까? 물론, 동기화 된 블록, 동시 잠금없는 데이터 구조와 같은 ClassA에 대한 세분화 된 동시성 제어를 사용할 수 있습니다.스레드 안전 코드를 캡슐화하는 가장 좋은 방법은 무엇입니까
감사합니다.
public class ClassA{
public synchronized void method1(ClassB cb){
//do internal stuff1
cb.printAlog();
//do internal stuff2
}
public synchronized void method2(){
//do internal stuff3
}
......
}
public class ClassB{
public void printALog(){
//....
}
......
}
'ClassB'가 상태 비 저장 인 경우,'ClassA'의 필드로 주입하지 않으시겠습니까? – axtavt