프로그램은 컴퓨터에서 실행되는 명령어들의 집합입니다. 일반적으로 프로그램은 하나의 작업을 수행하는 단일 프로세스로 구성됩니다. 하지만 멀티 프로세싱과 멀티 스레딩을 사용하여 여러 작업을 동시에 처리할 수 있습니다.
process
는 컴퓨터에서 실행 중인 프로그램의 인스턴스입니다. 프로세스는 운영체제에 의해 관리되며, 자신만의 주소 공간, 실행 상태, 자원 및 제어 정보를 갖고 있습니다.
process
는 다음과 같은 특징을 가지고 있습니다. 먼저, 각 프로세스는 독립적으로 실행되며, 서로의 주소 공간이나 자원에 접근할 수 없습니다. 각 프로세스는 운영체제로부터 할당받은 자원을 사용하여 독립적으로 실행됩니다.
멀티 프로세스는 여러 개의 프로세스가 동시에 실행되는 것을 말합니다. 각 프로세스는 독립적인 메모리 공간을 가지고 있으며, 각자의 CPU 시간을 할당받아 작업을 수행합니다. 멀티 프로세싱은 여러 작업을 동시에 처리할 수 있으므로 시스템의 성능을 향상시킬 수 있습니다. 그러나 프로세스 간의 통신과 같은 추가적인 관리가 필요합니다.
멀티 스레딩은 하나의 프로세스 내에서 여러 개의 스레드가 동시에 실행되는 것을 말합니다. 스레드는 프로세스 내의 동일한 메모리 공간을 공유하며, 각자의 실행 흐름을 가지고 작업을 수행합니다. 멀티 스레딩은 여러 작업을 동시에 처리할 수 있으며, 스레드 간의 통신과 데이터 공유가 비교적 간단합니다. 하지만 스레드 간의 동기화와 교착상태(deadlock) 등의 문제에 유의해야 합니다.
public class ThreadMain {
public static void main(String[] args) {
Thread1 th1 = new Thread1();
Thread2 th2 = new Thread2();
th1.start();
th2.start();
}
}
class Thread1 extends Thread{
@Override
public void run() {
for(int i = 0; i<300; i++) {
System.out.println("-");
}
}
}
class Thread2 extends Thread{
@Override
public void run() {
for(int i = 0; i<300; i++) {
System.out.println("|");
}
}
}
public class MyRunnable implements Runnable {
public void run() {
// 스레드에서 실행될 작업을 구현합니다.
}
}
// 스레드 생성 및 실행
Thread thread = new Thread(new MyRunnable());
thread.start();
public class MyThread extends Thread {
public void run() {
// 스레드에서 실행될 작업을 구현합니다.
}
}
// 스레드 생성 및 실행
MyThread thread = new MyThread();
thread.start();