멀티 태스킹
멀티태스킹 : 여러개의 애플리 케이션 동시 실행
다중 스레딩 : 멀티태스킹 하게 해주는거
스레드 : 각각의 작업, 동일한 데이터 공유 -> 빠른 실행을 위해 사용
프로세스 : 자신만의 데이터 가짐
최근 CPU는 속도가 매우 빠르고 여러 개의 코어가 포함됨 = > 하나의 스레드로는 모든 코어 이용 X
멀티스레딩 => 여러 코어 최대한 활용 But 동기화라고 하는 까다로운 문제가 발생티 태스킹
Tread t = new Thread(); //스레드 객체 생성
t.start(); //스레드 시작
Thread()
Thread(String name) : 이름이 name인 스레드 객체 생성
static int activeCount()
String getName()
intgtPriority() : 스레드 우선 순위 반환
void interrupt() : 현재 스레드 중단
boolean isInterrrupted ()
void run()
void start()
static void yield() : 현재 스레드를 다른스레드에게 양보하게 만듦
...기타등등
스레드 생성과 실행
스레드 생성법
1. Thread 클래스 상속
- Thread 클래스를 상속받은 후 run() 메소드 재정의
- run() 메소드 안에 작업 기술
class MyThread extends Thread {
public void run () {
for (int i =0; i<=10; i++) {
System.out.print(i+" ");
}
}
}
public class MyThreadTest {
public static void main (String args[]) {
Thread t = new MyThread();
t.start();
}
}
2. Runnable 인터페이스 구현
- run() 메소드를 가지고 있는 클래스 작성
- 이 클래스의 객체를 Tread 클래스의 생성자를 호출할 때 전달
Runnable 인터페이스 클래스 작성 -> run 메소드 작성 -> Thread 객체 생성하고 MyRunnable 객체를 인수로 전달
-> start () 호출 == 스레드 시작

class MyRunnable implements Runnable {
public void run() {
for (int i = 0; i <= 10; i++){
System.out.print(i + " ");
}
}
}
public class MyRunnableTest {
public static void main(String args[]) {
Thread t = new Thread(new MyRunnable());
t.start();
}
}
3. 람다식을 이용한 스레드 작성
스레드 상태
- New 상태 - Thread 클래스의 인스턴스는 생성 but, start() 메소드를 호출하기 전이라면 스레드는 New 상태에 있음
- Runnable 상태 - start() 메소드 호출 전이면 스레드는 실행가능한 상태가 됨. 하지만 실행상태는 아님
- Running 상태 - 스레드 스케줄러가 스레드를 선택하려면 스레드는 실행중인 상태가 됨
- Blocking 상태 - 스레드가 아직 살아있지만, 여러가지 이유로 실행할 수 없는 상태
- Terminated 상태 - 스레드가 종
스레드 스케줄링
동기화
스레드 간의 조정
'학교 > 컴프2' 카테고리의 다른 글
텀프로젝트 코드 정리 및 활동 기록 (0) | 2025.01.06 |
---|---|
컴프 2 중간고사 (Week 5, 6) (0) | 2024.10.31 |
컴프 2 중간고사 (Week 7,8) (0) | 2024.10.31 |
컴프 2 중간고사 (Week 3,4) (0) | 2024.10.31 |