저는 Java 및 멀티 스레드를 처음 사용합니다. 다음과 같은 문제가 있습니다 :재귀/멀티 스레딩 프로그램 문제
두 개의 다른 스레드에서 실행되는 Class A
및 Class B
이라는 두 클래스가 있습니다.
Class A
은 onNewEvent()
입니다.
일단이 메서드가 호출되면 Class B
에 작업을 요청합니다. B 클래스가 작업을 마치는 즉시 메서드를 호출합니다 (Class A
에도 정의 됨).
여기에 문제가 있습니다. 내가 원하는 것은 onJobDone()
메서드에서 새 작업을 만들고 Class B
으로 다시 보내야합니다. 여기
A.onNewEvent(){
//create job
//ask B to do it
B.do()
}
B.do{
// Do some stuff
A.jobDone()
}
A.onJobDOne(){
B.do() //doItAgain
// print message "Thank you for doing it"
}
문제는 메시지가 "그 일을 주셔서 감사합니다"이다의 순서로 (의사) 무엇을 인쇄 결코 극복이다. 실제로 onJobDone()
메서드가 호출 될 때 B.do()
이 매우 빠르기 때문에 B.do()
을 호출합니다. 바로 onJobDone()
을 호출하므로 실행 흐름이 코드의 인쇄 메시지 부분에 나타나지 않습니다.
이것은 불쾌한 멀티 스레딩 문제 중 하나라고 생각합니다.
도움을 주시면 감사하겠습니다.
이 문제는 멀티 스레딩과 관련이 없으며 방금 무한 재귀 호출을 수행했습니다. – kahoon
onJobDone()에서 B.do() 전에 메시지를 인쇄하십시오. –
B.do()가 암묵적으로 항상 B.Do()를 다시 호출하면 결코 종료되지 않습니다. 당신은 시간이 좀 stackoverflow 예외로 끝내야한다 –