-
Java Multithreading [1] - Java에서 Thread를 생성하는 법Java/Multi Threading 기초 2022. 8. 16. 08:29
Java Multithreading
멀티스레딩의 개념과 Java에서의 활용법을 공부하고 정리하는 시리즈입니다.
1. Java에서 Thread를 생성하는 법
Java로 프로그래밍을 하고 있는 누구나 Thread를 사용 중입니다.
main()
메서드를 실행하는 main thread인데요. 이 thread는 메인 메서드가 실행되서 끝나는 블록을 만날 때까지의 실행을 담당합니다.
그러면 하나의 thread만 더 추가/실행할 수 있다면 multithreading을 구현하게 되는 거네요!Java에서는 thread를 실행하는 데에 필요한 속성과 동작들을 하나의 class로 JDK에서 관리하고 있습니다.
Thread
라는 이름의 클래스입니다.Thread t = new Thread();
와 같은 식으로 새로운 스레드를 생성할 수 있다는 것이죠!
하지만, 스레드 객체 자체만으로는 실행은 될 수 없습니다. 스레드의 실행 상태를 구현할 수 있도록 스레드 인스턴스 생성 시Runnable
인터페이스를 구현해야 합니다. 예를 들면 이런 식입니다.Thread t = new Thread(new Runnable(){ @Override public void run() { // do something } }); t.start();
간단하죠? 기존 스레드가 코드를 실행하다가
new Thread(~~)
하는 순간 새로운 스레드를 만들고,t.start();
를 만나는 순간 새로운 스레드가 스케줄링 대상이 됩니다.하지만 누군가는 '
new
키워드를 두 번이나 써야하다니 너무 귀찮아...!'라고 생각할 수도 있겠죠?😀
그럴 때는 Thread를 상속하는 class를 만들면 됩니다. 이런 식으로 코드가 구성되겠죠.class MainClass { Thread newT = new MyThread(); newT.start(); } class MyThread extends Thread { @Override public void run() { // do something } }
new
를 두 번 쓰지 않아도 된다는 장점(😅...) 외에도 다른 특징들이 있는데요.run()
안에서this
키워드를 통해 실행 스레드의 정보에 접속이 가능합니다. 스레드명 같은 것 말이에요.
또한 이 방식은 단순히 스레드를 생성하는 것뿐만 아니라 내부 로직을 캡슐화할 수 있다는 장점이 있습니다.하지만 이 방식만이 특별히 권장되는 것은 아니에요. 사실 내부적으로는 동일하게 동작하게 됩니다. 그러니 상황에 맞게 적절히 필요에 따라 본인이 판단한 대로 코드를 작성하시면 되겠습니다. 😃
'Java > Multi Threading 기초' 카테고리의 다른 글
[Java Multithreading] 메모리 영역 - Stack과 Heap (3) 2022.10.25 [Java Multithreading] 성능 최적화의 두 관점 - 처리량과 http 서버 (0) 2022.10.24 Java Multithreading [4] - 성능 최적화의 두 관점 - 지연 시간 (0) 2022.08.29 Java Multithreading [3] - Thread#join() : Thread 간을 조정하는 방법 (0) 2022.08.23 Java Multithreading [2] - Java에서 Thread를 종료하는 법 (0) 2022.08.18 Java Multithreading [0] - 스레드와 프로세스의 차이 (0) 2022.08.12