에서 멀티 스레딩 :다음 코드에 따라 재귀 방법
synchronized int x(int y) {
int m;
class statement extends Thread {
@Override
void run() {
//Some Statements
if (condition) {
m = x(someValue);
}
//other statements
}
}
//some statements
statement st = new statement();
st.start;
return m;
}
이 프로그램은 x(int y)
호출 할 때마다, 그것은 새 스레드를 생성합니다.
이제는 프로그램이 두 번째로 x()
을 호출하면 외부 스레드 (첫 번째 호출의 스레드)가 객체의 잠금을 획득합니다. 그래서 두 번째 호출 (내부 스레드)의 스레드는 객체를 획득하거나 차단됩니다.
감사가 만드는 키워드
이것은 정말 이상한 코드입니다. 이전에는 본 적이 없었습니다. 스레드를 사용하고 동기화 된 x의 블로킹을 사용하는 것은 말이되지 않습니다. –
@TobiasOtto 더 자세히 설명해 주시겠습니까? 왜 그것이 이해가되지 않습니까? – HMD
계산 _을 실행하는 _long이 있고 _main programm_을 실행하거나 _complex calculations_을 많이 갖고 있고 둘 이상의 cpu/core가 계산에 대해 병렬로 작업하기를 원한다면 새 스레드를 시작합니다. 귀하의 예제에서 메서드 x의 차단은 다른 스레드를 금지합니다. –