[0617] Multi threads

ㅇㅇㅈ·2025년 6월 17일

멀티 스레드

깜자
어째서~

 


적절한 스레드 개수

  CPU 사용량이 높은 작업   

  • 최적 스레드 개수 = 코어개수 + 1

  • ex) 4코어 CPU → 5개 스레드

 

   I/O 작업(파일 처리, 네트워크 처리 등)   

  • 최적 스레드 개수 = (코어 개수*2)
                              또는 (I/O 시간을 고려하여 더 많은 스레드)

  • ex) 4코어 CPU → 8~16개 스레드가 적절함

 

스레드를 이렇게 많이 만들 수 있다고?
내 생각에 이 사람들은 뇌도 좌뇌/우뇌/앞뇌/뒤뇌/윗뇌/아랫뇌 해서 6코어 두뇌로 살아가고 있는 것 같다

 


스레드 생성

Thread 클래스를 상속하여 스레드 생성

Thread 클래스를 상속한 후, run() 메소드를 오버라이딩하여 실행할 코드를 작성.
start()를 호출하면 새로운 스레드가 생성돼 실행됨.
sleep(1000)을 사용하여 1초씩 대기하여 실행.

 
Thread 상속

- 다른 클래스를 상속할 수 없음 (extends Thread)
- 유연성이 낮음
- 실무에서 잘 사용하지 않음

 

Runnable 인터페이스를 구현하여 스레드 생성

Runnable 인터페이스를 구현한 후 Thread 객체를 생성할 때 사용.
Thread thread = new Thread(New MyRunnable()); 형태로 실행.

Runnable 인터페이스를 구현한 클래스를 만들어준 것이다.

 
Runnable 구현

- 다른 클래스를 상속하며 동시에 사용 가능 (extends Thread)
- 유연성이 비교적 높음
- 실무에서 더 많이 사용됨

 


start() <> run()

run()으로 직접 호출하면 단순한 메소드 호출이 되기 때문에
    멀티 스레드는 동작되지 않으니
start()로 호출하여 새로운 스레드를 생성시켜 병렬 실행을 해야한다고 한다.
깜자

근데 start()를 호출할 경우 두 개의 스레드가 동시에 실행되기에, 출력 순서는 랜덤이라고 한다.

0개의 댓글