자바 다 중 스 레 드 학습 (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 를 사용 하여 현재 스 레 드 를 가 져 올 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
09_프로필을 읽는 방식으로 반사를 사용하여 실례 대상에 대한 호출을 완성합니다텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.