23.03.10 스레드 / JVM

김민성·2023년 3월 10일
0

프로세스 : 실행 중인 애플리케이션을 의미한다.
스레드 : 데이터와 애플리케이션이 확보한 자원을 활용하여 소스 코드를 실행한다.

작업 스레드 생성과 실행
스레드가 수행할 코드는 클래스 내부에 작성해주어야 하며, run() 이라는 메서드 내에 스레드가 처리할 작업을 작성한다.

run() 메서드 실행 방법
1. Runnable 인터페이스를 구현한 객체에서 run()을 구현하여 스레드를 생성하고 실행
2. Thread 클래스를 상속 받은 하위 클래스에서 run()을 구현하여 스레드를 생성하고 실행

  1. Runnable 인터페이스를 구현한 객체에서 run()을 구현하여 스레드를 생성하고 실행하는 방법
    ThreadExample1
    출력 결과 해석
    @와#은 섞여서 출력된다. 즉 메인 스레드와 작업 스레드가 동시에 병렬로 실행되면서
    main 메서드와 run() 메서드의 코드를 실행시키기 때문이다.

  2. Thread 클래스를 상속 받은 하위 클래스에서 run()을 구현하여 스레드를 생성하고 실행하는 방법

스레드의 이름 조회하기
thread 참조값.getName();

스레드의 이름 설정하기
thread 참조값.setName();

스레드 인스턴스의 주소값 얻기
Thread.currentThread().getName()

임계 영역 : 오로지 하나의 스레드만 코드를 실행할 수 있는 코드 영역
락 : 임계 영역을 포함하고 있는 객체에 접근할 수 있는 권한

스레드 동기화 : 멀티 스레드의 경우, 두 개 이상의 스레드가 공유 데이터에 동시에 접근하게 되어 문제가
발생하는데 이러한 문제를 해결하기 위해 데이터에 스레드가 동시에 접근하지 못하게 설정하는 것

JVM : 자바로 작성한 소스 코드를 해석해 실행하는 별도의 프로그램

JVM의 구조

자바로 소스 코드를 작성하고 실행하면, 먼저 컴파일러가 실행되면서 컴파일이 진행된다.
컴파일의 결과로 .java 확장자를 가졌던 소스 코드가 .class 확장자를 가진 파일로 변환된다.
이후 메모리를 할당 받고 클래스 로더가 코드 파일을 JVM 내부로 불러들여 런타임 데이터 영역에 적재시킨다. 로드가 완료되면 실행 엔진이 코드를 실행시킨다.

0개의 댓글