자바 다 중 스 레 드 빨리 해결 해 드릴 게 요.

1.스 레 드 가 무엇 입 니까?
스 레 드 는 운영 체제 스케줄 링 의 최소 단위 이 며 경량급 프로 세 스 라 고도 부른다.그것 은 프로 세 스 에 포함 되 어 있 으 며 프로 세 스 의 실제 운영 단위 입 니 다.같은 프로 세 스 는 여러 개의 스 레 드 를 만 들 수 있 습 니 다.모든 프로 세 스 는 독립 된 메모리 공간 을 가지 고 있 습 니 다.공 유 된 메모리 변 수 를 방문 할 수 있 습 니 다.
2.스 레 드 의 상태
스 레 드 의 상 태 는 일반적으로 Runable 과 Blocked 를 볼 수 있 습 니 다.가장 많은 것 은 Blocked 입 니 다.cpu 의 시간 이 짧 기 때문에 IO 를 빨리 기다 리 고 임계 자원 을 기다 리 고 있 습 니 다.대충 알 면 돼.
图片
3.프로 세 스,스 레 드 를 어떻게 통속 적 으로 이해 합 니까?
예 를 들 어 식당 을 열 었 습 니 다.식당 이라는 실 체 는 바로 과정 입 니 다.식당 안의 종업원 은 바로 라인 입 니 다.식당 안의 좌석 은 바로 자원(게임 안의 데이터)입 니 다.모든 종업원 은 손님 을 자리 에 앉 힐 수 있 습 니 다.여러 명의 종업원 이 자 리 를 배정 하 는 것 은 다 중 스 레 드 경쟁 이 고 자 물 쇠 는 바로 번 호 를 매 기 는 것 입 니 다.스 레 드 탱크 는 여러 명의 종업원 들 이 줄곧 거기에 서서 호출 되 기 를 기다 리 고 있다.
图片
4.스 레 드 와 프로 세 스 의 차이
프로 세 스 는 독립 된 주소 공간 을 가지 고 있 습 니 다.장점 은 격 리 도가 좋 고 안정 적 이라는 것 입 니 다.운영 체제 가 관리 하 는 것 이기 때문에 프로 세 스 와 프로 세 스 간 에 논리 적 으로 격 리 되 어 있 습 니 다.운영 체제 에 문제 가 없 으 면 프로 세 스 의 오 류 는 다른 프로 세 스 에 영향 을 주지 않 습 니 다.부족 한 점 은 정보 자원 공유 의 번 거 로 움 입 니 다.스 레 드 는 프로 세 스 가 시작 하 는 실행 장치 일 뿐 프로 세 스 자원 을 공유 하 는 것 입 니 다.생 성,소각,전환 이 간단 하고 속도 가 빠 르 며 메모리 사용량 이 적 으 며 CPU 이 용 률 이 높 습 니 다.그러나 프로그래머 가 통제 해 야 할 것 도 비교적 많 고 서로 영향 을 주 며 문제 가 발생 할 확률 이 높다.한 라인 이 끊 기 면 전체 프로 세 스 가 끊 어 지기 때문에 프로그래머 의 측면 에서 볼 때 우 리 는 어떤 코드 가 라인 이 안전 한 것 만 볼 수 있 을 뿐 프로 세 스 가 안전 하 다 고 말 하지 않 는 다.
5.스 레 드 안전 이란 무엇 입 니까?
공 유 된 데 이 터 를 가 진 여러 스 레 드 를 병행 하 는 프로그램 에서 스 레 드 안전 코드 는 동기 화 체 제 를 통 해 각 스 레 드 가 정상 적 이 고 정확하게 실 행 될 수 있 으 며 데이터 오염 등 의외 의 상황 이 발생 하지 않도록 보장 합 니 다.
图片
유추:식당 에서 모든 종업원 은 자신의 번 호 를 가지 고 있 습 니 다.예 를 들 어 제 가 방금 한 사람 을 8 번 자리 에 앉 게 했 습 니 다.그러면 저 는 당연히 다음 이 9 번 자리 라 고 생각 합 니 다.만약 에 다른 종업원 이 9 번 테이블 을 동시에 배정 하면 제 가 다시 배정 하면 데이터 가 안전 하지 않 고 문제 가 생 길 것 입 니 다.
6.스 레 드 를 만 드 는 방법
자바 스 레 드 를 만 드 는 세 가지 방법:
  • Thread 류 를 계승 하여 스 레 드 류 를 만 들 고 다른 종 류 를 계승 할 수 없습니다
  • Runnable 인터페이스 실현
  • Callable 과 Future 를 통 해 스 레 드 를 만 듭 니 다
  • 
    package thread;
    /**
     * @author   
     */
    public class ExtendThread extends Thread {
        @Override
        public void run() {
            System.out.println("ExtendThread");;
        }
    }
    
    package thread;
    import java.util.concurrent.Callable;
    /**
     * @author   
     */
    public class ImpCallable implements Callable<Integer> {
        @Override
        public Integer call() throws Exception {
            System.out.println("Callable ");
            return 1;
        }
    }
    
    package thread;
    /**
     * @author   
     */
    public class ImpRunnable implements Runnable {
        @Override
        public void run() {
            System.out.println("Runnable");
        }
    }
    
    package thread;
    import java.util.concurrent.FutureTask;
    /**
     * @author   
     */
    public class Aain {
        public static void main(String[] args) {
            new ExtendThread().start();
            new Thread(new ImpRunnable()).start();
            new Thread(new FutureTask<>(new ImpCallable())).start();
        }
    }
    요약:
    스 레 드 의 개념 은 생활 에서 비롯 되 고 개념 을 이해 하 며 프로젝트 에서 생각 할 때 프로젝트 의 스 레 드 모델 만 알 면 큰 문제 가 발생 하지 않 는 다.
    이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!

    좋은 웹페이지 즐겨찾기