멀티스레딩 자바 여러 스레드를 동시에 실행하는 프로세스입니다.
스레드는 가장 작은 처리 단위인 경량 하위 프로세스입니다. 멀티프로세싱과 멀티스레딩은 모두 멀티태스킹을 달성하는 데 사용됩니다.
CSS를 중앙으로 보내는 버튼
그러나 스레드는 공유 메모리 영역을 사용하기 때문에 멀티프로세싱보다 멀티스레딩을 사용합니다. 별도의 메모리 영역을 할당하지 않아 메모리가 절약되고, 스레드 간 컨텍스트 전환이 프로세스보다 시간이 덜 걸립니다.
Java Multithreading은 주로 게임, 애니메이션 등에 사용됩니다.
Java 멀티스레딩의 장점
1) 그것 사용자를 차단하지 않습니다 스레드는 독립적이고 동시에 여러 작업을 수행할 수 있기 때문입니다.
2) 당신 많은 작업을 함께 수행할 수 있으므로 시간이 절약됩니다. .
3) 스레드는 독립적인 이므로 단일 스레드에서 예외가 발생하더라도 다른 스레드에는 영향을 미치지 않습니다.
멀티태스킹
멀티태스킹은 여러 작업을 동시에 실행하는 프로세스입니다. 우리는 CPU를 활용하기 위해 멀티태스킹을 사용합니다. 멀티태스킹은 두 가지 방법으로 달성할 수 있습니다.
- 프로세스 기반 멀티태스킹(멀티프로세싱)
- 스레드 기반 멀티태스킹(멀티스레딩)
1) 프로세스 기반 멀티태스킹(Multiprocessing)
- 각 프로세스는 메모리에 주소를 가지고 있습니다. 즉, 각 프로세스는 별도의 메모리 영역을 할당합니다.
- 프로세스는 무겁습니다.
- 프로세스 간 통신 비용이 높습니다.
- 한 프로세스에서 다른 프로세스로 전환하려면 저장하고 로드하는 데 약간의 시간이 필요합니다. 레지스터 , 메모리 맵, 업데이트 목록 등
2) 스레드 기반 멀티태스킹(Multithreading)
- 스레드는 동일한 주소 공간을 공유합니다.
- 스레드는 가볍습니다.
- 스레드 간 통신 비용이 낮습니다.
참고: 각 스레드마다 하나 이상의 프로세스가 필요합니다.
자바에서 스레드란 무엇입니까?
스레드는 가장 작은 처리 단위인 경량 하위 프로세스입니다. 별도의 실행 경로입니다.
스레드는 독립적입니다. 한 스레드에서 예외가 발생하더라도 다른 스레드에는 영향을 미치지 않습니다. 공유 메모리 영역을 사용합니다.
위 그림과 같이 프로세스 내부에서 스레드가 실행됩니다. 스레드 간에 컨텍스트 전환이 있습니다. OS 내부에는 여러 프로세스가 있을 수 있으며, 하나의 프로세스가 여러 스레드를 가질 수 있습니다.
참고: 한 번에 하나의 스레드만 실행됩니다.
자바 스레드 클래스
자바가 제공하는 스레드 클래스 스레드 프로그래밍을 달성하기 위해. 스레드 클래스는 다음을 제공합니다. 생성자 스레드에서 작업을 생성하고 수행하는 방법. 스레드 클래스 확장 객체 클래스 Runnable 인터페이스를 구현합니다.
자바 스레드 메소드
S.N. | 수정자 및 유형 | 방법 | 설명 |
---|---|---|---|
1) | 무효의 | 시작() | 스레드 실행을 시작하는 데 사용됩니다. |
2) | 무효의 | 달리다() | 스레드에 대한 작업을 수행하는 데 사용됩니다. |
삼) | 정적 공백 | 잠() | 지정된 시간 동안 스레드를 휴면 상태로 유지합니다. |
4) | 정적 스레드 | 현재스레드() | 현재 실행 중인 스레드 개체에 대한 참조를 반환합니다. |
5) | 무효의 | 가입하다() | 스레드가 죽을 때까지 기다립니다. |
6) | 정수 | 우선순위() | 스레드의 우선순위를 반환합니다. |
7) | 무효의 | 우선순위 설정() | 스레드의 우선순위를 변경합니다. |
8) | 끈 | getName() | 스레드의 이름을 반환합니다. |
9) | 무효의 | 세트이름() | 스레드 이름이 변경됩니다. |
10) | 긴 | getId() | 스레드의 ID를 반환합니다. |
열하나) | 부울 | 살아있다() | 스레드가 살아 있는지 테스트합니다. |
12) | 정적 공백 | 생산하다() | 현재 실행 중인 스레드 개체가 일시 중지되고 다른 스레드가 일시적으로 실행될 수 있습니다. |
13) | 무효의 | 유예하다() | 스레드를 일시 중단하는 데 사용됩니다. |
14) | 무효의 | 재개하다() | 일시 중단된 스레드를 재개하는 데 사용됩니다. |
열 다섯) | 무효의 | 멈추다() | 스레드를 중지하는 데 사용됩니다. |
16) | 무효의 | 파괴하다() | 스레드 그룹과 모든 하위 그룹을 파괴하는 데 사용됩니다. |
17) | 부울 | is데몬() | 스레드가 데몬 스레드인지 테스트합니다. |
18) | 무효의 | 세트데몬() | 스레드를 데몬 또는 사용자 스레드로 표시합니다. |
19) | 무효의 | 방해하다() | 스레드를 중단시킵니다. |
이십) | 부울 | 중단되었습니다() | 스레드가 중단되었는지 여부를 테스트합니다. |
이십 일) | 정적 부울 | 중단된() | 현재 스레드가 중단되었는지 여부를 테스트합니다. |
22) | 정적 정수 | 활성카운트() | 현재 스레드의 스레드 그룹에 있는 활성 스레드 수를 반환합니다. |
23) | 무효의 | 체크액세스() | 현재 실행 중인 스레드에 스레드를 수정할 수 있는 권한이 있는지 확인합니다. |
24) | 정적 부울 | 홀드락() | 현재 스레드가 지정된 개체에 대한 모니터 잠금을 보유하고 있는 경우에만 true를 반환합니다. |
25) | 정적 공백 | 덤프스택() | 현재 스레드의 스택 추적을 표준 오류 스트림으로 인쇄하는 데 사용됩니다. |
26) | 스택 추적 요소[] | getStackTrace() | 스레드의 스택 덤프를 나타내는 스택 추적 요소 배열을 반환합니다. |
27) | 정적 정수 | 낱낱이 세다() | 모든 활성 스레드의 스레드 그룹과 해당 하위 그룹을 지정된 배열로 복사하는 데 사용됩니다. |
28) | 스레드.상태 | getState() | 스레드의 상태를 반환하는 데 사용됩니다. |
29) | 스레드그룹 | getThread그룹() | 이 스레드가 속한 스레드 그룹을 반환하는 데 사용됩니다. |
30) | 끈 | toString() | 스레드 이름, 우선순위 및 스레드 그룹을 포함하여 이 스레드의 문자열 표현을 반환하는 데 사용됩니다. |
31) | 무효의 | 통지() | 특정 개체를 기다리고 있는 하나의 스레드에 대해서만 알림을 제공하는 데 사용됩니다. |
32) | 무효의 | 통지모두() | 특정 개체의 모든 대기 스레드에 알림을 제공하는 데 사용됩니다. |
33) | 무효의 | setContextClassLoader() | Thread에 대한 컨텍스트 ClassLoader를 설정합니다. |
3. 4) | 클래스로더 | getContextClassLoader() | 스레드에 대한 컨텍스트 ClassLoader를 반환합니다. |
35) | 정적 Thread.UncaughtExceptionHandler | getDefaultUncaughtExceptionHandler() | 포착되지 않은 예외로 인해 스레드가 갑자기 종료될 때 호출되는 기본 핸들러를 반환합니다. |
36) | 정적 공백 | setDefaultUncaughtExceptionHandler() | 포착되지 않은 예외로 인해 스레드가 갑자기 종료될 때 호출되는 기본 핸들러를 설정합니다. |
- 두 개의 스레드로 두 가지 작업을 수행하는 방법은 무엇입니까?
- 익명 클래스로 멀티스레딩을 수행하는 방법은 무엇입니까?
- 스레드 스케줄러란 무엇이며 선점형 스케줄링과 시간 분할의 차이점은 무엇입니까?
- 스레드를 두 번 시작하면 어떻게 되나요?
- start() 메서드 대신 run() 메서드를 호출하면 어떻게 되나요?
- 조인 방법의 목적은 무엇입니까?
- 사용자 스레드가 남아 있지 않은 경우 JVM이 데몬 스레드를 종료하는 이유는 무엇입니까?
- 종료 후크란 무엇입니까?
- 가비지 컬렉션이란 무엇입니까?
- finalize() 메소드의 목적은 무엇입니까?
- gc() 메소드는 무엇입니까?
- 동기화란 무엇이며 왜 동기화를 사용합니까?
- 동기화 방법과 동기화 블록의 차이점은 무엇입니까?
- 정적 동기화를 수행하는 두 가지 방법은 무엇입니까?
- 교착상태란 무엇이고 언제 발생할 수 있나요?
- 스레드 간 통신 또는 협력이란 무엇입니까?
- 멀티스레딩
- 스레드의 수명주기
- 스레드를 생성하는 두 가지 방법
- 다중 스레드로 다중 작업을 수행하는 방법
- 스레드 스케줄러
- 스레드 잠자기
- 스레드를 두 번 시작할 수 있나요?
- start() 메서드 대신 run() 메서드를 호출하면 어떻게 되나요?
- 스레드에 참여하기
- 스레드 이름 지정
- 스레드의 우선순위
- 데몬 스레드
- ShutdownHook
- 쓰레기 수거
- 동기화 방법을 사용한 동기화
- 동기화된 블록
- 정적 동기화
- 이중 자물쇠
- 스레드 간 통신