하루하루1
202
2020-05-28 13:09:02
3
181

쓰레드 사용법?


쓰레드는 어떤 경우에 사용하는건가요?

중요한 기능같은데 팀 프로젝트를 할 때 사용해본 기억이 없습니다.


상속이나 Runable을 사용해야 하는거 보면 자동으로 구현이 되어있는건 아닌거같은데 언제 사용하는지 궁급합니다.

0
  • 답변 3

  • 바람종
    1k
    2020-05-28 13:56:38 작성 2020-05-28 13:57:38 수정됨

    보통 웹 프레임워크라고 가정하면 내부적으로 쓰레드가 다 쓰이고 있습니다.

    단순한 설명만 해드리면..

    A라는 함수가 10초 걸리고, B라는 함수가 5초 걸린다고 해봅시다.

    A();

    B();

    이런식으로 둘다 메인쓰레드에서 실행하면 15초가 걸리겠죠?

    A 10초 후 완료. 그다음에 B 5초후 완료로

    B는 최초 시작 15초후에 완료가 되겠죠

    하지만 위 함수들이 순서가 상관 없다고 가정하고

    A(), B()를 각각 새로운 쓰레드를 만들어서 그쪽에서 돌리면

    A(), B()가 동시에 실행되고

    각각 A는 5초 후, B는 10초 후에 작업이 끝나게됩니다.


    기본적인 개념은 이렇게 여러 작업을 동시에 진행하기 위해서 사용하구요

    이렇게 여러 작업을 동시에 하면서 데이터도 주고 받는 일이 생기기 때문에

    데이터에 안전하게 접근하기 위해 뮤텍스, 세마포어, 싱크로나이즈드 뭐 이런 개념들이 생기고

    다른 쓰레드를 기다리는 메소드가 존재하기도 합니다.

  • esrse
    888
    2020-05-28 18:50:26

    프로그램을 돌렸더니 1개의 CPU 사용량이 100%를 치면서 처리량에 한계가 왔을 때 쓰레드를 고려하시면 됩니다.

    연산이 많이 필요한 작업을 해야할 때 CPU 사용률이 올라가는데, CPU 가 100%를 치면 더 이상 처리량을 올릴 수가 없습니다. 처리량이 더 많이 필요하다면 여러개의 CPU를 활용하는 게 좋겠죠.

    그때 쓰레드를 생성해서 병렬로 여러개의 쓰레드를 실행시키면 여러개의 CPU에서 동시에 연산이 수행되기 때문에 처리량을 올릴 수 있습니다.

  • staticVar
    513
    2020-05-31 11:15:49

    웹에서는 쓰레드를 사용할일이 없습니다.

  • 로그인을 하시면 답변 을 등록할 수 있습니다.