본문 바로가기
학교/컴프2

컴프 2 내용 정리 (Week 10)

by 발빠진 쥐 2024. 11. 12.

멀티 태스킹

멀티태스킹 : 여러개의 애플리 케이션 동시 실행
 
다중 스레딩 : 멀티태스킹 하게 해주는거
 
스레드 : 각각의 작업, 동일한 데이터 공유 -> 빠른 실행을 위해 사용
프로세스 : 자신만의 데이터 가짐
 
최근 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