질문1. Thread를 생성하는 방법 2가지와 차이점은 ?
- 1.Thread 상속
- 다른 클래스를 상속할 수 없음 (extends Thread)
- 유연성이 낮음
- 실무에서 잘 사용하지 않음
- Runnable구현
- 다른 클래스를 상속하면서 동시에 사용 가능 (implements Runnable)
- 유연성이 비교적 높음
- 실무에서 더 많이 사용됨
질문2. start()와 run()메소드의 차이는?
- run()을 직접 호출하면 단순한 메소드 호출이 되어 멀티스레딩이 동작하지 않음
- start()를 호출해야 새로운 스레드가 생성되어 병렬 실행됨
질문3. Java에서 멀티스레드의 장접과 단점은?
- 장점1. 성능 향상 및 응답성 개선
- 단일 스레드는 하나의 작업만 수행하지만 멀티스레딩을 사용하면 동시 처리가 가능
- 파일을 다운로드하면서 UI를 유지하는 프로그램을 만들 수 있음
- 장점2. 작업 분할 및 병렬 처리 가능
- 멀티코어 CPU에서는 여러 개의 스레드를 병렬로 실행하여 성능을 향상시킬 수 있음
- 데이터 처리를 여러 개의 스레드로 나누면 실행 시간이 단축됨
- 단점1. 동기화 문제
- 여러 스레드가 동시에 같은 자원에서 접근하면 값이 꼬일 가능성이 있음
- 단점2. 컨텍스트 스위칭 비용
- 스레드를 너무 많이 만들면 CPU가 스레드를 전환하는데 많은 시간을 사용
- 따라서, 스레드가 많아질수록 오히려 성능이 저할될 수 있음
- 단점 3. 디버깅이 어려움
- 멀티스레딩 환경에서는 동작 순서가 매번 다를 수 있기 때문에 디버깅이 어렵고 재현이 쉽지 않음