중앙처리장치

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
    }
}

댓글남기기