Java 메소드 동기화와 관련된 문제가 있습니다. 간단히 설명 할 수 있기를 바랍니다.다른 클래스 (및 다른 패키지)의 두 메소드 동기화
두 개의 다른 클래스에서 서로 다른 두 가지 패키지가 있습니다. 뭔가 같이 :
Package1
|_Class1
\MethodA
Package2
|_Class2
\MethodB
좋아, 그래서 지금은 하지 스레드은이 두 가지 방법을 동기화해야합니다.
공유 세마포어 : 지금까지, 나는 두 가지 접근 방법이있다.
package Package3;
public class SemaphoreClass {
public static Semaphore;
}
JVM 어쨌든,이 공유 세마포어를 고려한다면 난 정말 모르겠어요
는Package1
및
Package2
밖에서 뭔가를 공유 정적 세마포어를 생성합니다.
동기화 됨 (SharedClass.class). 그 두 가지 방법을 동기화하기 위해 공유 클래스를 사용
같은 일이 :
public void MethodA() {
synchronized (SharedClass.class) {
//...
}
및
public void MethodB() {
synchronized (SharedClass.class) {
//...
}
어쨌든, 이건 그냥 접근이다. 달성하고자하는 것을 구현하는 가장 좋은 방법은 무엇인지 듣고 싶습니다. JVM을위한 공유 세마포어를 사용하면 작업이 더 쉬워 질 것이지만,이를위한 솔루션이 있어야한다는 것을 알고 있습니다. 미리 감사드립니다.
세마포어 솔루션은 괜찮습니다 ... 그러나 finally 블록에서 해제하는 것을 잊지 마십시오! – fge
클래스가 다른 패키지에 있다는 사실은 관련이 없으므로 단일 클래스의 인스턴스를 동기화하는 것과 같은 방법으로 인스턴스를 동기화 할 수 있습니다. – SJuan76
@ SJuan76 나는 그것이 정말로 관련이 없다는 것을 안다. 그래서 그것들을 "()"안에 넣는다;) –