43일 차 - 프로세스(Process), 스레드(Thread) (23.02.24)

yvonne·2023년 2월 24일
0

📂Java

목록 보기
45/51
post-thumbnail

1. 단일 프로세스와 멀티 프로세스에 대하여 설명하시오.

  • 단일 프로세스: 한 작업이 끝나고 나서야 다른 작업을 처리 가능
  • 멀티 프로세스 : 독립적으로 프로그램을 실행하고, 동시에 여러가지 작업을 처리
  • 멀티 스레드: 한 개의 프로그램을 실행하고, 내부적으로 여러가지 작업을 처리







2. 프로세스와 스레드의 차이

📌프로세스(Process)

  • 실행 중인 프로그램
  • 운영체제 OS로부터 자원을 할당받는 작업 단위
  • 사용자가 애플리케이션을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것을 프로세스라고 부른다.

📌스레드(Thread)

  • 프로세스가 할당받는 자원을 이용하는 실행 단위
  • 프로세스 내에서 실제 작업을 수행
  • 프로세스 내의 명령어 블록으로 시작점과 종료점을 가진다.
  • 실행중에 멈출 수 있으며 동시에 수행 가능하다.




3. 아래의 가로 찍기와 세로찍기를 스레드로 돌리시오.

		for(int i=0; i < 300; i++)
			System.out.printf("%s", new String("-"));		

		
		for(int i=0; i < 300; i++) 
			System.out.printf("%s", new String("|"));

package thread;

public class threadTest {

	public static void main(String[] args) {
		/* 싱글스레드 (Single Thread) */

		for (int i = 0; i < 300; i++) {
			System.out.printf("-");
		}

		for (int i = 0; i < 300; i++) {
			System.out.printf("|");
		}

		// ===========================================
		/* 멀티스레드 (Multi Thread) */
		MyThread1 th1 = new MyThread1();
		MyThread2 th2 = new MyThread2();
		th1.start();
		th2.start();

		System.out.println("main 종료");
	}

}

class MyThread1 extends Thread {
	@Override
	public void run() {
		for (int i = 0; i < 300; i++) {
			System.out.printf("-");

		}
		System.out.println("th1 종료");

	}
}

class MyThread2 extends Thread {
	@Override
	public void run() {
		for (int i = 0; i < 300; i++) {
			System.out.printf("|");

		}
		System.out.println("th2 종료");
	}
}




4. 아래의 의미를 설명해 보시오.

  • 메인 스레드가 종료되더라도 실행 중인 스레드가 하나라도 있다면 프로세스는 종료되지 않습니다.

📌메인 스레드

  • 모든 자바 어플리케이션은 메인 스레드(main thread)가 main() 메소드를 실행하면서 시작
    메인 스레드는 필요에 따라 작업 스레드들을 만들어서 병렬로 코드 실행이 가능하다.

  • 싱글 스레드 어플리케이션에서는 메인 스레드를 종료하면 프로세스도 종료되지만, 멀티 스레드 애플리케이션처럼 실행 중인 스레드가 하나라도 있다면, 프로세스는 종료되지 않는다.
    (메인 스레드가 먼저 종료되더라도 상관X)




5. 예제 문제 (1)

  • 학생마다 Student 객체를 생성하고
    4명의 학생 정보를 ArrayList 컬렉션에 저장한 후에,
    ArrayList의 모든 학생(4명) 정보를 출력하고 학생 이름을 입력 받아
    해당 학생의 학점 평균을 출력하는 프로그램을 작성하라.
학생 이름, 학과, 학번, 학점평균 입력하세요.
\>> 황기태, 모바일, 1, 4.1
\>> 이재문, 안드로이드, 2, 3.9
\>> 김남윤, 웹공학, 3, 3.5
\>> 최찬미, 빅데이터, 4, 4.25
----------------------------------
이름: 황기태
학과: 모바일
학번: 1
학점평균: 4.1
----------------------------------
이름: 이재문
학과: 안드로이드
학번: 2
학점평균: 3.9
----------------------------------
이름: 김남윤
학과: 웹공학
학번: 3
학점평균: 3.5
----------------------------------
이름: 최찬미
학과: 빅데이터
학번: 4
학점평균: 4.25
----------------------------------
학생 이름 >> 최찬미
최찬미, 빅데이터, 4, 4.25
학생 이름 >> 이재문
이재문, 안드로이드, 2, 3.9
학생 이름 >> 그만



6. 예제 문제 (2)

ArayList 대신, HashMap<String, Studnet> 해시맵을 이용하여 다시 작성하라. 해시맵에서 키는 학생 이름으로 한다.

profile
개발 연습장

0개의 댓글