AI교육과정 - Java.10

단비·2022년 10월 7일
0

AI교육과정

목록 보기
10/69

🤔 sc.hasNextLine()

  • 다음 라인이 있는지 (true, false 값으로 나옴)

  • 프로세스, 멀티태스킹, 쓰레드 비교

    • 프로세스
      • 윈도우 작업 관리자에서 프로세스 탭에 올라와있는 어플리케이션 하나
      • 운영체제로부터 필요한 메모리를 할당받아 어플리케이션의 코드를 실행
    • 멀티태스킹
      • 두 가지 이상의 작업을 동시(병렬작업)에 처리하는 것
    • 쓰레드(Thread)
      • 하나의 프로세스 내부에서 독립적으로 실행되는 작업 단위
      • 운영체제에 의해 관리되는 하나의 작업 또는 Task를 의미
      • 다중 쓰레드 작업 시에는 각 쓰레드끼리 정보를 주고 받을 수 있어 처리 과정의 오류를 줄일 수 있음
      • 프로세스끼리는 정보를 주고 받을 수 없음
      • JVM에 의해 하나의 프로세스가 발생, main() 안의 실행문들이 하나의 쓰레드
    • 멀티 쓰레드
      • 여러 쓰레드를 동시에 실행시키는 응용프로그램을 작성하는 기법
      • 메모리 공유로 인한 시스템 자원 소모가 줄어듬
      • 동시에 두 가지 이상의 활용이 가능
      • 서로 자원을 소모하다가 충돌이 일어날 가능성이 있음
      • 코드가 난해해질 가능성이 있음
  • 쓰레드 생성 방법

    1. 쓰레드 생성 방법 (Thread 클래스 상속)

      • start()실행 시 run() 메소드가 수행되어 내부적으로 처리
      public class 클래스명 extends Thread {
      		public void run(){
      				쓰레드 객체가 start() 호출하면 실행될 문장;
      				...
      		}
      }
      
      Thread 참조변수 = new 클래스명();
      참조변수.start(); // run 메소드 호출
    2. 쓰레드 생성 방법 (Runnable 인터페이스를 구현)

      public class 클래스명 implements Runnalbe(){
      		public void run(){
      				쓰레드 객체가 start() 호출하면 실행될 문장;
      				...
      		}
      }
      
      Runnable 잠조변수1 = new 클래스명();
      Thread 참조변수2 = new Thread(참조변수1);
      참조변수2.start();
    3. 쓰레드 생성 방법 (Runnable 익명 메소드 생성)

      Thread th3 = new Thread(new Runnable() {
                  @Override
                  public void run() {
      						}
      });
  • 쓰레드에 이름을 부여하지 않을 경우 자동생성됨
  1. join()

    • 쓰레드는 메인쓰레드가 종료되어도 다른 쓰레드는 백그라운드에서 동작하여 종료되지 않음
    • join을 이용하면 다른 쓰레드가 종료될 때까지 메인쓰레드가 기다림
    th.join()
  2. yield()

    • 다른 쓰레드에 자원 사용을 양보할 때 사용
    • 우선 순위가 낮은 쓰레드에게 다른 쓰레드가 해당 자원을 양보
    Thread.yield()
  3. wait()

    • 시간 값을 넣으면 주어진 시간 이후에 자동으로 실행 대기 상태로 전환
    • 시간 값을 넣지 않으면 일시 정지
  4. notify()

    • wait()로 일시 정지 중인 쓰레드 1개를 실행 대기 상태로 전환
  5. notifyAll()

    • wait()로 일시 정지 중인 모든 쓰레드를 실행 대기 상태로 전환
  • 동기화(Synchronized) 방법
    • 멀티 쓰레드 프로세스에서는 다른 쓰레드의 작업에 영향을 미칠 수 있기 때문에 진행중인 작업이 다른 쓰레드에 간섭을 받지 않게 동기화가 필요
      1. 메소드

        public synchronized 반환형 메소드명(매개변수){}
      2. 문장

        synchronized(매개변수){}
  • 쓰레드 우선순위
    • 쓰레드가 여러개인 경우 우선 순위가 높은 쓰레드가 제어권을 많이 가지게 됨
    • 우선 순위는 1~ 10까지 int값으로 할당
    • 기본 우선 순위는 5
    • 우선 순위가 높은 쓰레드는 실행 기회가 많이 주어짐
    1. MAX_PRIORITY : 가장 높은 순위, 10
    2. NORM_PRIORITY : 일반적인 순위, 5
    3. MIN_PRIORITY : 가장 낮은 순위, 1
profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글