[java] 멀티 스레드

eunu·2024년 3월 8일
0

JAVA

목록 보기
18/21

실습코드

package edu.threadFirst;

class DigitThread extends Thread {
	
	@Override
    public void run() {
        for (int cnt = 0; cnt < 10; cnt++) 
            System.out.print(cnt);
    }
}

public class ThreadFirstEx {
	public static void main(String[] args) {
		
		DigitThread th = new DigitThread();
		th.start();
		for (char ch = 'A'; ch <= 'Z'; ch++) 
            System.out.print(ch);
	}

}

Untitled

프로세스와 스레드

프로그램

  • 물리적인 메모리 공간에 저장되어 있음 실행하면

프로세스

  • 실행중인 하나의 프로그램
  • 하나의 프로그램이 다중 프로세스를 만들기도 함
    • 예를 들어 크롬창을 두개 켜면, 작업관리자에 프로세스가 두개 뜸. 하나의 프로그램으로 두 개의 프로세스가 만들어진 것
    • 교수님 다 잘 알다뇨.. 스레드.. 몰라요..

멀티 태스킹(multi tasking)

  • 두 가지 이상의 작업을 동시에 처리하는 것

멀티 프로세스

  • 독립적으로 프로그램들을 실행하고 여러 가지 작업 처리

멀티스레드

  • 스레드
    • 실가닥 이라는 뜻.
    • 하나의 작업을 처리할 수 있는 논리적인 하나의 단위
  • 한 개의 프로그램을 실행하고 내부적으로 여러 가지 작업 처리
    • 예를 들어 영상을 재생하는 프로세스면, 첫번째 스레드는 영상재생/ 두번째 스레드는 음악재생을 하도록 동시에 여러 작업을 시킬 수 있음.

기동시키다.

스레드가 일을 하도록 만드는 것을 일컫는 말.

start()

왜 인터페이스를 따로 뺐을까?

Untitled

→ 인터페이스에서만 이용할 수 있는게 뭐지? → 다중상속!

  • 다중 상속을 이용하기 위해 따로 뺀거임.

스레드 클래스

package edu.threadRunnable;

// Runnable을 구현했으니 스레드 클래스
public class SamllLetters implements Runnable{

	@Override
	public void run() {
		for (char ch = 'a'; ch <= 'z'; ch++)
            System.out.print(ch);
		
	}

}

멀티스레드 구현 시 주의점

  • 꼭 동기화를 시켜줘야 함.
    • 하지 않으면 엉뚱한 결과값이 반환됨.

진도 나간 부분(추가 정리 필요)

Calc가 계산 3.141592~-> SharedArea 전달 -> 프린트는 전달받은 것을 출력

profile
Just Do It

0개의 댓글