JAVA Thread 생성하기, 스레드 생성하기
# 스레드 (Thread) 란 ?
프로그램, 애플리케이션 하나가 실행중인 것을 프로세스라고 합니다.
이 프로세스는 데이터, 컴퓨터의 자원, 스레드 로 구성 되어있습니다.
그 중에서 스레드는 데이터와 애플리케이션이 확보한 자원을 이용해서 작성한 소스코드를 실행합니다.
코드 실행의 흐름이라고 볼 수 있습니다.
스레드를 배우기 전에 저희가 코드를 짜서 실행해왔던 것들은 실행의 주가 되는
메인스레드에서 하나의 스레드로 실행을 했었습니다.
이를 하나의 스레드다 하여 ‘싱글 스레드’ 라고 합니다.
저는 이제 스레드를 배운 후에 메인 스레드 외의 별도의 작업스레드를 생성하여
여러 개의 스레드를 사용하는 ‘멀티 스레드’로 작업을 해볼 예정입니다.
가벼운 예를 들자면,
작업량이 적을 때라면 사람 혼자서 작업을 처리를 해도 괜찮지만, 양이 늘어나면
혼자서 작업을 처리하기엔 시간도 오래걸리고 금방 피곤해질 것입니다.
하지만 혼자가 아닌 여럿이서 작업을 처리한다면, 많은 일을 더 효율적으로 할 수 있을 것입니다.
그래서 스레드를 공부하고자 합니다.
# 스레드 생성
스레드를 활용한다는 것은,
1. 작업 스레드가 수행할 코드를 작성하고
2. 작업스레드를 생성 후 실행시키는 것을 의미합니다.
그런데 자바는 객체지향 언어이므로 모든 코드는 클래스 안에서 작성됩니다.
이 때문에 스레드가 수행할 코드도 클래스 내부에 작성해주어야 합니다.
run()이라는 메서드가 이미 규정되어 있고 메서드 내에 스레드가 처리할 작업을 작성하도록 합니다.
스레드를 생성해 봅시다.
스레드 생성 방법에는 두가지가 있습니다.
1) Runnable 인터페이스를 구현한 객체에서 run()을 구현하여 스레드 생성
2) Thread클래스를 상속받는 하위클래스 작성 후 run()을 구현하여 스레드 생성
#1. Runnable 인터페이스를 구현한 객체에서 run()을 구현하여 스레드 생성
첫번째 방법부터 해보겠습니다.
1. run() 메서드 내에 스레드의 작업을 작성해주고 클래스로 구현합니다.
2. 인터페이스를 객체로 구현한 후, 스레드를 생성합니다.
3. 생성한 스레드를 start() 메서드를 이용해 시작해줍니다.
4. 실행 결과
0부터 29까지 정상적으로 출력.
# 5. 번외
추가로 반복문을 섞어 실행해보면 메인스레드와 스레드1이 순서에 상관없이 병렬적으로 실행되는 것을 알 수 있습니다.
여러 번 실행해보면 각각 다른 결과가 도출됩니다.
- 추가해준 반복문 : 메인 스레드
- 생성해준 스레드 : thread1
1)
2)
3)
이처럼 코드는 같으나 실행하면 매번 다른 결과가 나옵니다.
#2. Thread클래스를 상속받는 하위클래스 작성 후 run()을 구현하여 스레드 생성
2번방법은 거의 동일하나, Thread를 상속받은 하위클래스를 인스턴스화하여
스레드를 생성합니다.
실행결과는 1번 방법과 동일합니다.
#3. 번외
그 외에도 이렇게 클래스를 정의하지 않고 익명 객체를 사용하여
스레드를 생성하고 실행할 수 있습니다.
실행 결과는 동일합니다.
이처럼 스레드의 생성하는 법을 배웠습니다.
JAVA의 심화과정에 들어가니 더 깊숙하고 다양한 활용법을 배워서 내용은 많지만,
실전에서 활용 가능할 수 있도록 더 연습하고 익숙해져야 할 것 같습니다.