728x90

1) 여러 개의 스레드를 사용하면 동시에 여러 개의 관련 작업을 실행 할 수 있어서, 애플리케이션의 반응성을 향상시킬수 있기 때문입니다. 또한 여러개의 작업을 동시에 실행하여 더 뛰어난 성능을 달성할 수도 있습니다.

2) 하나의 프로레스에 속한 다수의 스레드는 다음 항목을 공유합니다. 

  • 코드
  • 프로세스의 열린 파일
  • 프로세스의 메타 데이터

3) 운영 체제는 어떤 방식으로 스케줄링한 스레드를 설계해야하나?

운영 체제는 각 스레드의 대한 동적 우선 순위를 유지하여 인터렉티브 스레드를 우선시하고 시스템의 특정 스레드가 기아 상태 가 되는것을 방지합니다. 

 

이 코드는 어떤 작업을 수행하나요?

Thread thread = new Thread(new Runnable() {
  @Override
  public void run() {
     System.out.println("Executing from a new thread");
  }
});

위의 코드는 새 스레드를 생성하는데, 만약 thread.start() 호출을 통해 시작될 경우, 새 스레드의 run() 메서드 안에 있는 코드를 실행하게 됩니다. 

 

public class Main {
    public static void main(String [] args) {
        Thread thread = new TaskThread1();
        thread.start();        
    }
    
    public static class TaskThread1 extends Thread {
        @Override
        public void run(){
            System.out.println("Hello from new thread");
        }
    }
}
코드 스니펫 2:

public class Main {
    public static void main(String [] args) {
        Thread thread = new Thread(new Task2());
        thread.start();
    }
 
    public static class Task2 implements Runnable {
        @Override
        public void run(){
            System.out.println("Hello from new thread");
        }
    }
}

코드 스니펫 1과 코드 스니펫 2의 기능은 동일하며, 모두 맞습니다. 멀티스레드 코드를 구성하는 두 가지의 다른 방식에 해당합니다. 

둘 다 모두 맞습니다. 코드를 구성하는 방식의 차이입니다. 일부 개발자들은 코드와 스레딩 기능을 분리하는 편을 선호하고, 또 Runnable 구현하는 편을 선호하곤 합니다. 다른 시나리오의 경우, 개발자들은 스레딩 기능을 하나의 클래스 안에 포함시키는 편을 선호하며 따라서 스레드를 확장하는 편을 선호합니다. 어느 방식이 맞고, 어느 방식은 틀리다고 할 수 없습니다

728x90
복사했습니다!