면접질문 - 멀티스레드

잠자는 고양이·2025년 5월 21일
0

Java

목록 보기
60/73

질문1. Thread를 생성하는 방법 2가지와 차이점은 ?

  • 1.Thread 상속
    • 다른 클래스를 상속할 수 없음 (extends Thread)
    • 유연성이 낮음
    • 실무에서 잘 사용하지 않음
    1. Runnable구현
    • 다른 클래스를 상속하면서 동시에 사용 가능 (implements Runnable)
    • 유연성이 비교적 높음
    • 실무에서 더 많이 사용됨

질문2. start()와 run()메소드의 차이는?

  • run()을 직접 호출하면 단순한 메소드 호출이 되어 멀티스레딩이 동작하지 않음
  • start()를 호출해야 새로운 스레드가 생성되어 병렬 실행됨

질문3. Java에서 멀티스레드의 장접과 단점은?

  • 장점1. 성능 향상 및 응답성 개선
    • 단일 스레드는 하나의 작업만 수행하지만 멀티스레딩을 사용하면 동시 처리가 가능
    • 파일을 다운로드하면서 UI를 유지하는 프로그램을 만들 수 있음
  • 장점2. 작업 분할 및 병렬 처리 가능
    • 멀티코어 CPU에서는 여러 개의 스레드를 병렬로 실행하여 성능을 향상시킬 수 있음
    • 데이터 처리를 여러 개의 스레드로 나누면 실행 시간이 단축됨
  • 단점1. 동기화 문제
    • 여러 스레드가 동시에 같은 자원에서 접근하면 값이 꼬일 가능성이 있음
  • 단점2. 컨텍스트 스위칭 비용
    • 스레드를 너무 많이 만들면 CPU가 스레드를 전환하는데 많은 시간을 사용
    • 따라서, 스레드가 많아질수록 오히려 성능이 저할될 수 있음
  • 단점 3. 디버깅이 어려움
    • 멀티스레딩 환경에서는 동작 순서가 매번 다를 수 있기 때문에 디버깅이 어렵고 재현이 쉽지 않음
profile
개발자가 되고 싶은 잠자는고양이

0개의 댓글