프로세스 및 스레드
CPU = 프로세서
명령어의 모음(프로세스)를 처리하는 핵심 중앙 처리 장치
프로세스
명령어의 모음, 독립적인 메모리 구성
스레드
- 하나의 프로세스에는 하나 이상의 스레드로 동작
- 힙 메모리를 공유함
예시
public class ShareObject {
private int number = 0;
public void setNumber(int number) {
this.number = number;
try {
Thread.sleep(2000);
} catch(Exception e) {
}
System.out.println(Thread.currentThread().getName() + ": " + this.number);
}
}
public class Main {
public static void main(String[] args) {
ShareObject shareObject = new ShareObject();
Thread taskThreadA = new Thread(() -> {
shareObject.setNumber(10);
}, "ThreadA");
Thread taskThreadB = new Thread(() -> {
shareObject.setNumber(1000);
}, "ThreadB");
taskThreadA.start(); // ThreadA: 1000
taskThreadB.start(); // ThreadB: 1000
}
}
Thread-safe (동기화)
- synchronized
public class ShareObject {
private int number = 0;
public synchronized void setNumber(int number) {
this.number = number;
try {
Thread.sleep(2000);
} catch(Exception e) {
}
System.out.println(Thread.currentThread().getName() + ": " + this.number);
}
}
public class Main {
public static void main(String[] args) {
ShareObject shareObject = new ShareObject();
Thread taskThreadA = new Thread(() -> {
shareObject.setNumber(10);
}, "ThreadA");
Thread taskThreadB = new Thread(() -> {
shareObject.setNumber(1000);
}, "ThreadB");
taskThreadA.start(); // ThreadA: 10
taskThreadB.start(); // ThreadB: 1000
}
}
댓글남기기