쓰레드(Thread)의 이해와 사용법

쓰레드(Thread)의 이해와 사용법

C 은 이 정답입니다.


스레드 실행 기본 개념
스레드 실행 기본 개념

스레드 실행 기본 개념

네임스페이스 System.Threading 다중 스레드 프로그래밍을 가능하게 하는 클래스와 인터페이스를 제공합니다. System.Threading.Thread 스레드를 만들고 제어하며, 해당 속성을 설정하고, 상황을 가져옵니다. 스레드 사용 방법 스레드 인스턴스를 생성합니다. 생성자 의 매개변수로 스레드로 동작 할 로직을 전달합니다. 인스턴스를 명시적으로 실행합니다. 스레드 동작 이해 프로그램이 실행되면, 프로세스는 적어도 하나의 실행 흐름스레드을 가진다.

프로그램의 실행 시작점은 메인 함수입니다. 메인 함수도 내부에 소스 코드로 이루어진 로직을 갖고 있습니다.

일반 쓰레드 Normal Threa
일반 쓰레드 Normal Threa

일반 쓰레드 Normal Threa

쓰레드를 만들 때 주요하게 쓰이는 구문은 아래와 같습니다. 1. 직원 채용 공고를 내고 thread1 threading.Threadtarget 쓰레드 동작 함수, arg 필요한 인자값 쓰레드 함수 연결

3. 직원이 일을 시작합니다. thread1.start 쓰레드 동작 시작

사장Main은 직원Thread을 뽑았으니 일을 줄여 3개의 일을 0.1초마다. 하고, 결과를 살펴보면, 사장Main은 일을 급속도로 끝내고 퇴근을 하지만Main thread 종료 일이 서툰 일반직원Normal thread은 일을 마칠 때 까지 야근을 하고 퇴근Sub thread 종료합니다.

물론 일이 빨리 끝나면, 사장보다. 빨리 퇴근할 수도 있습니다.

내비게이션이 안내해 주는 길을 따라 가는 방법
내비게이션이 안내해 주는 길을 따라 가는 방법

내비게이션이 안내해 주는 길을 따라 가는 방법

운전을 하는 나Main thread와 상관없이 동작하는 내비Sub thread는 내 여행길Prcess 1에 언제나 함께하기 때문에 목적지가 어디인지, 현재 위치가 어디인지, 얼만큼 왔는지 등등의 정보Data, Memory를 나Main thread와 함께 공유합니다. 덕분에 2번 방법보다. 빠르고 효율적입니다. 그리고 내Main thread가 운전을 하는 동안에도 내비Sub thread는 별도로 동작하므로 1번 방법처럼 운전을 멈추고 길을 찾을 필요도 없습니다.

1. 잠시 정차하여 지도를 볼 수도 있고 Main thread 안에서 순차적 수행 2. 길을 잘 아는 친구에게 전화를 걸어 물어볼 수도 있지만 다른 Process를 동작시켜 통신함 3. 내비게이션이 안내해 주는 길을 따라 가는게 편합니다.

스레드threads의 특징

스레드는 트위터의 대항마로 나온 SNS입니다. 일론 머스크가 트위터를 인수 한 수 떠난 이용자와 광고주를 겨냥 해 트위터와 유사한 기능을 갖추고 있습니다. 텍스트 기반으로 실시간 소식을 공유하고 대화를 나눌 수 있으며 한 게시물당 500자, 사진은 10장, 영상은 5분 이내로 업로드 가능합니다. 스레드가 인스타와 다른 점은 해시태그를 삽입할 수 없고 다이렉트 쪽지를 보낼 수 없습니다.는 점입니다.

지금까지 인스타의 해시태그와 DM에 지친 분들이 환영해볼만한 점이라는 생각이 듭니다.

함수의 특성과 스레드 적용

스레드는 실행 흐름입니다. 이 실행 흐름은, 소스 코드로 구현된 비지니스 로직 덩어리로 일반적으로 함수 형태로 사용합니다. 그렇기에 스레드의 실행에서 실행 될 로직을 함수 형태로 구현하여 스레드의 인스턴스에 전달하는 방법이 일반적입니다. 스레드의 함수 사용에서 고려해야 할 부분은 두가집니다. 1. 함수는 매개변수를 전달받을때, 변수 형태다. 함수를 매개변수 형태로 전달 할 수 없습니다.. 그렇다면 어떠한 방식으로 함수를 매개변수로 전달 할 수 있는가? 2. 함수는 반환값을 사용할 있습니다.

스레드 동작은 반환값을 활용하는 것이 고려되었는가? 기본 실행 구조 Thread의 인스턴스를 생성해 인스턴스 생성자의 매개변수로, 메서드를 넘긴다.

스레드 상태

스레드 상태는 디버깅 시나리오 에서만 사용합니다. 코드에서 스레드 상황을 사용하여 스레드 활동을 동기화하면 안됩니다. 학습 단계에서 스레드 상태 값은, 로직의 구현보다. 스레드의 동작과 스레드 실행의 흐름을 이해하기 위해 짚고 넘어갑니다. 스레드 종료 스레드를 Running 상태이더라도 강제로 중단시킨다. 스레드는 자원을 공유합니다. 강제 종료시 어떤 문제가 발생할지 알 수 없습니다.. 스레드가 WaitSleepJoin 상태일 때

즉시 ThreadInterruptedException 발생 catch 절에서 예외를 받아서 쓰레드를 종료하면 됩니다.

자주 묻는 질문

스레드 실행 기본 개념

네임스페이스 System. 궁금한 사항은 본문을 참고하시기 바랍니다.

일반 쓰레드 Normal

쓰레드를 만들 때 주요하게 쓰이는 구문은 아래와 같습니다. 좀 더 구체적인 사항은 본문을 참고하시기 바랍니다.

내비게이션이 안내해 주는 길을 따라 가는

운전을 하는 나Main thread와 상관없이 동작하는 내비Sub thread는 내 여행길Prcess 1에 언제나 함께하기 때문에 목적지가 어디인지, 현재 위치가 어디인지, 얼만큼 왔는지 등등의 정보Data, Memory를 나Main thread와 함께 공유합니다. 좀 더 구체적인 사항은 본문을 참고해 주세요.