일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준 알고리즘
- 개발
- SAP 번역
- mac
- java
- Deep Learning
- sap
- S/4HANA
- 클래스
- BOPF
- 맥북
- 이클립스
- FPM
- Fiori
- html
- BOBF
- BTP
- 자바
- 자바 클래스
- 파이썬
- visual studio code
- python
- 알고리즘
- module
- tm
- Eclipse
- Algorithm
- ui5
- ABAP
- udemy
Archives
- Today
- Total
z2soo's Blog
JAVA 멀티스레드 본문
반응형
Key point
1. JAVA 멀티스레드 : 여러 작업을 동시에 실행시키는 방법
2. 인터페이스 implements 시, 무조건 구현해야하는 method 존재
3. Thread.sleep(초) : 스레드 작업에 (초) 딜레이
4. random.nextInt(정수) : 정수 범위에서의 랜덤한 정수 생성
1. JAVA 멀티스레드 개념
- 기본적으로 자바 프로그램은 한 개의 프로세스(프로그램)으로 작동된다. = 싱글 스레드
- CPU에서 여러 개의 코어를 가지고 있다면, 동시에 여러 가지의 작업을 실행시킬 수 있는데, 이를 멀티 프로세스라고 한다. 다만, 코어수보다 작업이 많다면, 한 개의 코어가 여러가지의 작업을 수행할 수 없는데, 이때 운영체제가 스케줄링이라는 기법으로 시간을 쪼개서(Round-Robin) 여러 개의 작업을 실행시킬 수 있다.
- 자바에서는 멀티 작업을 위해서 만들어진 클래스가 있는데, 인터페이스(Runnable)로 구현되어 있다. 해당 인터페이스를 물려받아서(implement) 우리가 원하는 작업들을 멀티스래딩으로 작동시킬 수 있다.
- Runnable 인터페이스에서는 run() 메소드를 필수적으로 구현해줘야 한다.
- 멀티스레드 작업은 백드라운드에서 병렬적으로 실행되며 다른 작업에 관여하지 않는다.
2. Java Code
ThreadWork
package ThreadPack;
import java.util.Random;
//1.인터페이스(Runnable)을 물려받아서 구현한다. (규약을 지킨다)
public class ThreadWork implements Runnable {
//2.run() 메소드를 구현해준다.
public void run() {
//병렬적으로 작업됨을 확인할 수 있는 항목으로 작성해보자.
//a. 자바에서 일정시간 동안 딜레이 거는 방법 > Thread.sleep()
//b. 반복문으로 일정시간 딜레이 거는 방법
//c.
try {
//랜덤 숫자 출력
//랜덤이 작업하는 방식은 현재시간 기반
Random random = new Random();
for(int x=1; x<=3; x++) {
//int rand=random.nextInt(100);
//위의 경우는 random 값이 나오지 않음
//반복문에서 Random 작업시 빠른 시간으로 같은 결과가 나옴
//반복문의 기반이 되는 값(seed)를 바꿔줘야 함
//Thread.sleep 사용시 exception 사용은 필수!
Thread.sleep(2000); //2초 딜레이
System.out.println(Thread.currentThread().getName() + ": " + random.nextInt(100));
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
ThreadPlay
package ThreadPack;
public class ThreadPlay {
public static void main(String[] args) throws InterruptedException {
Runnable work = new ThreadWork();
Thread t1 = new Thread(work);
Thread t2 = new Thread(work);
//서로 다른 스레드끼리 작업한다는 것을 확인하는 방법
//스레드의 고유 이름을 출력
t1.setName("T1");
t2.setName("T2");
//출력되는 것을 확인하면 T1, T2 순서가 일정하지 않음
//병렬처리의 특징
t1.start(); //실제 작업을 실행하는 부분
t2.start();
}
}
ThreadPlay를 수행한 결과는 아래와 같다.
3. Eclipse Screen
ThreadWork
ThreadPlay
반응형
'Programming > JAVA' 카테고리의 다른 글
JAVA Class (연습) ATM 구현 (0) | 2023.01.12 |
---|---|
JAVA 멀티스레드 (연습) (0) | 2023.01.11 |
JAVA의 Class (7) 오버로딩과 오버라이딩 (0) | 2022.12.28 |
JAVA의 Class (6) 클래스의 상속과 오버라이딩 (0) | 2022.12.28 |
JAVA의 Class (5) 오버로딩 (2) | 2022.12.27 |
Comments