자바로 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