쓰레드 Thread
쓰레드를 이해하려면 프로세스에 대해 알아야 한다.
간단히 말해 "프로세스"란, 실행중인 프로그램이다.
이 프로세스는 보통 하나의 루틴(프로그램 처리 경로)을 가지고 있다.
이 루틴은 직렬적인데, 즉 어떠한 일을 수행할 때 정해진 순서대로 일을 처리한다는 의미이다.
상황에 따라 순서가 필요 없는 일들이 있을 때 분리해서 동시에 처리하는 게 더 효율적일 때가 있다.
이 때 자바에서 사용할 수 있는 것이 쓰레드이다. 쓰레드를 이용하면 하나의 프로세스에서도 병렬적으로 처리, 즉 여러 개의 처리 루틴을 가질 수 있게 된다.
자바에서는 쓰레드도 하나의 객체로 정의한다. 쓰레드는 특이하게 main메소드 역할을 run메소드가 대신한다.
단순 반복의 코드를 실행할 때도 여러 개의 쓰레드를 만들어서 분리 시킨 뒤 결과 데이터를 받아 합치면 그만큼 시간을 절약할 수 있다. 여러 개의 프로세스를 띄워 실행하려면 각각 메모리를 할당해 줘야 하는데 반해 쓰레드를 하나 추가하면 더 적은 메모리를 점유하게 된다. 어떤 작업을 할 때 단일 쓰레드로 실행하는 것보다는 다중 쓰레드로 실행하는 것이 더 시간이 적게 걸린다.
※ 참고
쓰레드를 시작하는 메소드는 start()
쓰레드가 시작하면 수행되는 메소드는 run()
쓰레드 생성 방법
쓰레드 생성 방법에는 두 가지가 있다.
- Thread 클래스를 상속받기
- Runnable 인터페이스에 비해 많은 메소드를 포함 (sleep 메소드 등)
- Thread 클래스의 run메소드를 오버라이딩하여 사용
- 객체 추가 없이 start() 메소드를 바로 호출할 수 있다.
- Runnable 인터페이스 구현하기
- Runnable로 구현한 클래스는 쓰레드로 바로 시작할 수 없다.
- Thread 클래스의 생성자에 해당 객체를 추가하여 시작해야 한다.
'BackEnd > Java' 카테고리의 다른 글
[Java] 소켓 Socket (0) | 2021.08.03 |
---|---|
[Java] 간단하게 네트워크 사용해보기 (java.net) (0) | 2021.08.03 |
[Java] 가비지 컬렉션 Garbage Collection (0) | 2021.07.27 |
[Java] 자바로 Excel 파일 만들기 (0) | 2021.07.27 |
[Java] 아파치 POI 설치 및 사용법 (0) | 2021.07.26 |
댓글