-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[이태훈] 5주차, 6주차 미션 제출합니다. #24
Conversation
|
||
## 6.1.2 미리 정의된 컬렉터 | ||
|
||
Collectors에서 제공하는 메서드 기능 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Collectors
나Collections
이런 기존 클래스에서 's'가 붙은 class들은 왜 등장하게 되었을까요?- java 8 이후 부터는 두 클래스를 없애버릴 수도 있지만, 남아 있습니다. 왜일까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 객체나 요소를 처리하는 util 기능을 제공하기 위해서 입니다. Collectors는 Collector 인터페이스를 구현, Collections는 Collection를 구현한 클래스를 제공합니다.
- 호환성문제 때문입니다. 자바 8 이전에 작성된 코드들의 정상 작동을 제공하기 위해서입니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
맞습니다 원래는 인터페이스에서 static 메서드를 선언할 수 없었지만,
자바 8에서 부터 인터페이스에서도 static을 사용할 수 있게 되었죠
하지만 호환성을 위해 지우지 않았습니다
|
||
--- | ||
|
||
병렬 프로그래밍을 작성하려면 스레드와 락을 잘 사용해야 한다. 하지만 스레드와 락은 그저 목적을 위한 도구일 뿐이다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 프로세스와 스레드의 차이를 간단하게 설명해주세요
- 멀티 프로세싱, 멀티 스레딩의 개념에 대해 간단하게 설명해주세요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 프로세서는 각각의 별도의 주소 공간을 할당 받지만 스레드는 stack을 제외한 나머지 영역은 다른 스레드와 공유합니다.
- 멀티 프로세싱: 두개 이상의 프로세서가 하나 이상의 Task를 동시에 처리하는 것입니다. 각 프로세서간 메모리 구분이나 독립된 주소공간이 있을 때 사용됩니다.
멀티 스레딩: 하나의 Task를 프로세서에서 여러 스레드에 분배해 자원을 공유하며 처리하는 것입니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://www.youtube.com/watch?v=QmtYKZC0lMU&t=1s
심심할때 한번 보세요 엄청 좋은 영상입니다 ㅎㅎ
## 3.4.1 final 변수 | ||
|
||
- final을 지정한 변수의 값은 변경할 수 없다. (변수가 가리키는 객체가 불변 객체가 아니라면 해당객체에 들어 있는 값은 변경할 수 있다.) | ||
- final 키워드를 적절하게 사용하면 초기화 안전성(initialization safety)을 보장하기 때문에 별다른 동기화 작업 없이도 불변 객체를 자유롭게 사용하고 공유할 수 있다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
필드가 아닌 class에 final이 붙으면 클래스에 어떤 성격이 추가될까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
class에 final이 붙으면 해당 클래스는 상속하지 못합니다. 따라서 내부의 모든 메서드들도 overriding될 수 없습니다.
|
||
## 2.4 락으로 상태 보호하기 | ||
|
||
경쟁조건을 피하려면 접속 카운터를 증가시키거나(읽고 수정하고 쓰기) 늦게 초기화하는(확인 후 행동) 경우 하나의 공유된 상태에 대한 복합 동작을 단일 연산으로 만들어야 한다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이런 자원 경쟁이 일어나는 영역을 뭐라고 부를까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
임계영역(Critical Section)이라고 부릅니다.
|
||
## ForkJoinSUmCalculator 실행 | ||
|
||
- ForkJoinSumCalculator를 ForkJoinPool로 전달하면 풀의 스레드가 ForkJoinSumCalculator의 compute 메서드를 실행하면서 작업을 수행한다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 스레드 풀은 무엇일까요? 사용하는 장점은 무엇일까요?
- 풀의 크기가 크면 클 수록 좋을까요? "메모리를 많이 차지하게 된다" 외의 단점을 알려주세요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 작업을 처리할 수 있는 동일한 스레드들의 모음입니다. 미리 생성된 스레드를 할당하기만 하면 되기 때문에 딜레이가 발생하지 않아 전체적인 성능이 향상됩니다. 또한 재사용가능 하기 때문에 필요한 시스템 자원이 줄어든다는 장점이 있습니다.
- 실제로는 대부분의 스레드가 대기상태에 있게됩니다. 이로인해 GC 에 부하가 늘어나고 CPU를 사용하기 위해 많은 스레드가 경쟁하기 때문에 많은 자원을 소모하게 됩니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
맞습니다. 결국 수 많은 스레드들이 경쟁하면서 -> 많은 Context Switching이 발생하게 됩니다.
- 문맥상 이해할 수 있지만, 딜레이가 발생하지 않아 -> 스레드 생성시 발생하는 오버헤드를 언급하면 더 좋을 것 같습니다.
LGTM! 정말 고생 많으셨습니다. |
stream-quiz test 캡쳐본: