1. throws와 throw
class OurClass {
private final Boolean just = true;
public void thisMethodIsDangerous() throws OurBadException {
if (just) {
throw new OurBadException();
}
}
}
-
throws
- 메서드 이름 뒤에 붙어 메서드가 어떠한 예외사항을 던질 수 있는지 알려주는 예약어
- 여러 종류의 예외사항 적을 수 있음
-
throw
- 메서드 안에서 실제로 예외 객체를 던질 때 사용하는 예약어
- 실제로 던지는 예외 객체 하나와 함께 써야 하며 throw문과 함께 메서드가 종료됨
2. 멀티 쓰레드
싱글 쓰레드: 프로세스 안에서 하나의 쓰레드만 실행되는 것
- main() 메서드만 실행시켰을 때 싱글 쓰레드로 실행되고 있는 것
멀티 쓰레드: 프로세스 안에 여러 개의 쓰레드가 실행되는 것
- 하나의 프로세스는 여러 개의 실행 단위(쓰레드)를 가질 수 있으며 이 쓰레드들은 프로세스의 자원을 공유
- 메인 쓰레드 안에서 다른 작업 쓰레드들을 생성하여 실행하는 방식
- 운영체제의 상황에 따라 결과값이 가변적으로 바뀌므로 걸리는 시간과 동작 예측 불가능
3. 데몬 쓰레드와 사용자 쓰레드
데몬 쓰레드: 보이지 않는 곳(background) 에서 실행되는 낮은 우선순위를 가진 쓰레드
사용자 쓰레드: 보이는 곳(foregorund)에서 실행되는 높은 우선순위를 가진 쓰레드
⚠️ JVM 은 사용자 쓰레드의 작업이 끝나면 데몬 쓰레드도 자동으로 종료시켜 버림
4. 스트림 API
- forEach()
- map()
- forEach와는 반대로 넘겨받은 토대로 값을 변환시키는데 주로 사용
- 모든 요소를 가공해서 반환
- filter()