자바로 join을 직접 구현하여
A.fork();(요약해서 A라는 스레드 이름을 출력함)
B.fork();
A.join();
을 했더니
A
B
A
B
라고 나오는 상황입니다.
구현하기 전에 생각한 바로는 A.join()을 통해 A가 모두 출력이 실행될 때까지 B가 블록되어 멈춰있는다는 느낌을 상상했었는데 이렇지 않아서 이러한 결과가 나오는 것이 맞는지, 왜 이런 결과가 나오는지 모르겠어서 질문드립니다.
여기 깃허브 링크의 InterlockTest를 사용해서 테스트해보고 있습니다.
https://github.com/ykw1225/CSE-120/blob/master/nachos/threads/Condition2.java