자바 다 중 스 레 드 학습 (1)

스 레 드 개요:
자바 는 매우 우수한 다 중 스 레 드 지원 을 제공 합 니 다. 프로그램 은 매우 간단 한 방식 으로 다 중 스 레 드 를 시작 할 수 있 습 니 다. 다 중 스 레 드 는 생 성, 시작 스 레 드, 제어 스 레 드, 그리고 다 중 스 레 드 의 동기 화 (다 중 스 레 드 안전) 를 포함 합 니 다.
스 레 드 와 프로 세 스 의 차이 점:
거의 모든 운영 체제 가 프로 세 스 의 개념 을 지원 합 니 다. 모든 작업 은 보통 하나의 프로 세 스 에 대응 합 니 다. 프로그램 이 메모리 에 들 어가 면 하나의 프로 세 스 가 됩 니 다.프로 세 스 는 실행 중인 프로그램 이 며, 일정한 독립 성 을 가지 고 있다.프로 세 스 는 스 레 드 를 포함 합 니 다. 즉, 하나의 프로 세 스 는 여러 스 레 드 를 포함 할 수 있 습 니 다.프로 세 스 는 다음 과 같은 특성 을 가지 고 있 습 니 다. 1. 독립 성: 프로 세 스 는 시스템 에 독립 적 으로 존재 하 는 실체 입 니 다. 독립 된 자원 을 가 질 수 있 습 니 다. 모든 프로 세 스 는 자신의 개인 공간 을 가지 고 있 습 니 다. 프로 세 스 자체 의 허락 없 이 다른 프로 세 스 는 현재 프로 세 스 의 주 소 를 방문 할 수 없습니다.2. 동적: 프로 세 스 와 스 레 드 의 가장 큰 차이 점: 프로 세 스 는 시스템 에서 활동 하고 있 는 명령 의 집합 입 니 다.프로 세 스에 시간의 개념 을 넣 었 다.3. 동시성: 여러 프로 세 스 가 하나의 프로세서 에서 동시에 실 행 될 수 있 고 여러 프로 세 스 간 에 서로 영향 을 주지 않 습 니 다.
다 중 스 레 드: 스 레 드 는 프로그램 에서 독립 되 고 동시 다발 적 인 실행 흐름 입 니 다.스 레 드 는 프로 세 스 구분 의 최소 단위 입 니 다.스 레 드 에서 메모리, 파일 문 구 를 공유 할 수 있 고 모든 프로 세 스 가 대응 하 는 상태 입 니 다.
다 중 스 레 드 의 간단 한 실현:
다 중 스 레 드 는 두 가지 생 성 방식 이 있 습 니 다. 1. Thread 류 계승 2. Runnable 인터페이스 실현
public class ThreadTest extends Thread{
	@Override
	public void run() {
		while(true) {
			System.out.println("     。。。。");
		}	
	}
	
}
public class ThreadTest2 implements Runnable{
	@Override
	public void run() {
		while(true) {
			System.out.println("     。。。。");
		}
		
	}
}
public class Go {
	public static void main(String[] args) {
		ThreadTest t1=new ThreadTest();
		ThreadTest2 t2=new ThreadTest2();
		//     
		t1.start();
		//                ,      
		Thread t3=new Thread(t2);
		t3.start();
		//             
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				while(true) {
					System.out.println("     3。。。。。");
				}
			}
		}).start();
	}
}

코드 분석: 상기 코드 에서 보 듯 이 한 프로그램 에 세 개의 스 레 드 가 포함 되 어 있 습 니 다. 이 세 개의 스 레 드 는 같은 등급 의 집행 권 을 가지 고 경쟁 관 계 를 가 집 니 다. 그들 은 CPU 의 집행 권 을 경쟁 하고 누가 CPU 의 집행 권 을 빼 앗 으 며 누가 집행 합 니까?
두 가지 생 성 스 레 드 방식 의 장단 점 비교:
Runnable 인 터 페 이 스 를 실현 하 는 방법 을 사용 합 니 다. 1. 스 레 드 는 Runnable 인터페이스 만 실현 하고 다른 클래스 도 계승 할 수 있 습 니 다. 2. 이런 방식 으로 여러 스 레 드 가 하나의 target 대상 을 공유 할 수 있 습 니 다. 같은 스 레 드 가 같은 자원 을 처리 하 는 데 적합 하고 우리 의 CPU, 코드 와 데 이 터 를 분리 하여 이렇게 뚜렷 한 모델 의 관 계 를 형성 할 수 있 습 니 다.대상 을 향 한 사상 을 비교적 잘 구현 하 였 다.3. 프로 그래 밍 이 좀 복잡 합 니 다. 현재 스 레 드 에 접근 하려 면 Thread. currentThread () 방법 을 사용 해 야 합 니 다.
Thread 클래스 를 계승 하 는 방법: 1. Thread 클래스 를 계 승 했 기 때문에 다른 클래스 를 계승 할 수 없습니다.2. 프로 그래 밍 프로그램 이 간단 합 니 다. 현재 스 레 드 에 접근 하려 면 this 를 사용 하여 현재 스 레 드 를 가 져 올 수 있 습 니 다.

좋은 웹페이지 즐겨찾기