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() 메서드를 호출할 때 새로운 스레드를 생성하고 실행하는 순간 시간이 필요하기에 메인 작업자 스레드가 먼저 실행되는 형태로 출력했습니다.