더북(TheBook)

55.2 스레드 생성 및 호출하기

Thread 클래스와 ThreadStart 대리자를 사용하여 새로운 스레드를 하나 만들고, 이 스레드에 메서드를 담아 실행하는 내용을 코드로 살펴보겠습니다. 먼저 다음 내용을 입력한 후 실행해 보세요.

스레드 생성 및 호출: ThreadDemo.cs

using System;
using System.Threading;

class ThreadDemo
{
    static void Other()
    {
        Console.WriteLine("[?] 다른 작업자 일 실행");
        Thread.Sleep(1000); //1초 대기(지연)
        Console.WriteLine("[?] 다른 작업자 일 종료");
    }

    static void Main()
    {
        Console.WriteLine("[1] 메인 작업자 일 시작");

        //Thread 클래스와 ThreadStart 대리자로 새로운 스레드 생성
        var other = new Thread(new ThreadStart(Other));
        other.Start(); //새로운 스레드 실행

        Console.WriteLine("[2] 메인 작업자 일 종료");
    }
}

실행 결과

[1] 메인 작업자 일 시작
[2] 메인 작업자 일 종료
[?] 다른 작업자 일 실행
[?] 다른 작업자 일 종료

이 코드는 메인 작업자와 다른 작업자 두 사람이 일하는 모습을 표현한 것입니다. 메인 작업자 스레드는 일을 시작하자마자 바로 실행되어 먼저 메시지를 출력하지만, 다른 작업자 스레드는 생성한 후 1초간 지연되어 나중에 Other() 메서드 내용을 출력하는 것을 볼 수 있습니다.

코드 위치상으로는 [1][2] 사이에 Other() 메서드 코드가 있지만, 스레드의 Start() 메서드를 호출할 때 새로운 스레드를 생성하고 실행하는 순간 시간이 필요하기에 메인 작업자 스레드가 먼저 실행되는 형태로 출력했습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.