스레드를 잘 쓰면 비동기적인 흐름을 순차적인 느낌으로 바꿀 수 있다..?
서버 애플리케이션에서 자원 활용도와 처리율을 높이는 데 유용하다고 함..!
프로세서 스케줄링의 기본 단위는 스레드이다..?
그래서 스레드가 여러 개인 프로그램은 여러 프로세서에서 동시에 실행될 수 있어서 효율적임.
여러 스레드를 사용하면 프로세서가 하나라도 처리 속도를 높일 수 있다???
예를 들어 blocking I/O 때문에 CPU가 놀 때 다른 스레드를 실행하면 되니까..!
안전성 vs 활동성 vs 성능
스레드가 많은 프로그램은 컨텍스트 스위칭이 더 빈번하고, 상당한 부담이 된다고 함.
실행중인 컨텍스트를 저장하고 다시 읽어오면서 메모리 지역성이 손실되고, cpu 시간을 스케줄링에 소모하게 됨.
스레드 동기화는 컴파일러 최적화를 방해하고, 메모리 캐시를 지우기도 한다고 함...!
컨텍스트 스위칭이 성능에 어느정도나 영향을 주는지는 감 없음...
스레드는 복잡한 비동기 코드를 더 단순한 순차적 코드로 바꿔 복잡한 시스템을 단순하게 개발할 수 있게 해준다고 함...
-> 그런가..? 복잡한 비동기 코드는 뭔데?
스레드는 멀티프로세서 시스템의 능력을 최대한 끌어낼 수 있는 가장 쉬운 방법이라고 함...
-> 그렇겠지.. 그런가..?
event loop vs event dispatch thread
object finalization
RMI (Remote Method Invocation)
다른 JVM에서 실행 중인 객체의 메서드를 호출할 수 있게 해주는 건데..
head first design pattern 책에서 proxy 패턴 소개할 때도 나왔던 건데 잘 모름.
marshal/ unmarshal도...