My Blog

멀티 스레드 예제

by kai on 2. August 2019 , No comments

두 번째 예에서 : 스레드는 스레드 키워드를 확장하여 생성됩니다. 이렇게 하면 새 스레드 클래스가 생성됩니다. 이제 Count 클래스는 위와 같이 스레드로 작동합니다. 위에서 언급했듯이 전역 및 정적 변수가 있는 여러 스레드를 표시하는 C 프로그램은 모든 스레드가 데이터 세그먼트를 공유합니다. 전역 및 정적 변수는 데이터 세그먼트에 저장됩니다. 따라서 모든 스레드에서 공유 됩니다. 다음 예제 프로그램은 동일한 것을 보여 줍니다. 이 Java Thread 블로그의 첫 번째 항목을 진행하기 전에 이 예제를 고려하십시오: – 여러 코어가 있는 CPU는 요즘 점점 더 일반화되었습니다. 컴퓨터의 잠재력을 최대한 활용하려면 다중 스레드 응용 프로그램을 작성하는 것이 매우 중요합니다. 다중 스레드 응용 프로그램은 코딩 및 테스트가 어렵고 교착 상태, 경합 조건 및 기타 여러 다중 스레드 위험이 발생하기 쉽기 때문에 유지 관리 비용이 많이 듭니다. 다중 스레드 응용 프로그램을 작성하는 동안 처리 할 수있는 알려진 문제가 많이 있습니다.

교착 상태와 경주 조건은 거의 없습니다. 출력이 손상되지 않도록 다른 리소스에 대한 동기화된 액세스를 유지 관리해야 합니다. 예를 들어 파일 시스템의 파일이 여러 스레드에서 수정되는 경우 응용 프로그램은 한 번에 하나의 스레드만 파일을 수정하도록 허용해야 하며, 그렇지 않으면 파일이 손상될 수 있습니다. 이를 수행하는 한 가지 방법은 Lock 키워드를 사용하는 것입니다. Lock 문 주위의 공유 리소스에 액세스하는 경우 하나의 스레드만 잠금 블록 내에서 코드를 실행할 수 있습니다. 이제 기록 분석이 반 시간이 걸리고 사용자가 다운로드를 수행하고 나중에 확인하도록 선택하면 경고가 너무 늦게 올 수 있습니다. 우리는 단지 멀티 스레딩을 위해 외치는 응용 프로그램의 종류를 상상했다. 이상적으로는 다운로드가 백그라운드에서 발생해야 합니다(즉, 다른 스레드에서). 이렇게 하면 다른 프로세스가 동시에 발생할 수 있으므로 경고를 즉시 전달할 수 있습니다. 그 동안 사용자는 응용 프로그램의 다른 부분과 상호 작용합니다.

분석도 별도의 스레드에서 발생할 수 있으므로 결과가 계산되는 동안 사용자는 응용 프로그램의 나머지 부분과 함께 작업할 수 있습니다. 예 프로그램 2: 이 프로그램의 출력을 관찰하고이 프로그램에서 무슨 일이 일어나고 있는지 이해하려고합니다. 각 스레드 메서드의 사용을 이해 한 경우이 예제를 이해 하 여 문제에 직면 하지 않아야 합니다. 이렇게 하면 다음과 같은 결과가 생성됩니다. 이 예제를 반복해서 시도할 수 있으며 매번 다른 결과를 얻을 수 있습니다. 스레드를 만드는 프로그램(코드)을 시작하기 전에 Thread 클래스의 이러한 메서드를 살펴보겠습니다. 아래 예제에서는 이러한 방법을 거의 사용하지 않습니다. 멀티 스레딩 및 멀티 태스킹의 가장 좋은 예 : 이 예제에서는 동일한 리소스에 액세스하는 두 개의 스레드가 있습니다.

lock 키워드를 사용하면 공유 변수가 한 번에 하나의 스레드에서 액세스됩니다. 스레드 t1이 잠금 블록 내에서 코드를 실행하는 동안 스레드 t2가 대기중입니다. 스레드는 수명 주기의 다양한 단계를 거칩니다. 예를 들어 스레드가 태어나고, 시작되고, 실행되고, 죽습니다. 다음 다이어그램은 스레드의 전체 수명 주기를 보여 주었습니다. 멀티스레딩이 왜 해야 합니까? 스레드는 병렬 처리를 통해 응용 프로그램을 개선하는 데 널리 사용됩니다. 예를 들어 브라우저에서 여러 탭은 서로 다른 스레드일 수 있습니다. MS 워드는 여러 스레드, 하나의 스레드를 사용하여 텍스트의 서식을 지정하고 다른 스레드를 사용하여 입력을 처리합니다. 스레드는 다음과 같은 이유로 인해 프로세스보다 빠르게 작동합니다: 1) 스레드 생성이 훨씬 빠릅니다. 2) 스레드 간의 컨텍스트 전환이 훨씬 빠릅니다. 3) 스레드는 쉽게 종료 할 수 있습니다 4) 스레드 간의 통신이 빠릅니다. 여기에 새로운 스레드를 생성하고 실행을 시작하는 예입니다 – 차이가 없습니다.

그것은 모두 필요와 요구 사항에 따라 달라집니다. 예를 들어 설명하겠습니다. Java는 여러 상속을 지원하지 않으므로 한 클래스만 확장(상속)할 수 있으므로 Thread 클래스를 확장한 후에는 Java에서 다른 클래스를 확장하거나 상속할 수 없습니다.

kai멀티 스레드 예제