스레드(thread)

^_^·2022년 3월 24일
0

스레드(thread)
프로세스 내에서 실제로 작업을 수행하는 주체를 의미
모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행
두개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스라고 한다.
ex)while문을 동시에 여러개 사용하고 싶을 때

스레드(thread)를 실행하는 방법
1.Thread 클래스를 상속받는 방법
1:1(일대일), 하나의 객체의 하나의 스레드가 붙는 것
ex)객체를 만들었는데 다 따로따로 움직여야 할 경우

public class Loop1 extends Thread{

    //내가 실행하고 싶은 루프를 런을 오버라이드 하여 돌려주자
    @Override
    public void run() {
        execute();
    }

    public void execute(){
        for (int i = 0; i < 1000; i++) {
            System.out.println(Thread.currentThread().getName()+": "+ i+"::::::"+Loop1.this);
        }
    }
}

2.Runnable 인터페이스를 구현하는 방법
1:N(일대다), 한개의 객체에 여러 스레드가 붙는 것
ex)웹, 서블릿

public class Ex2 implements Runnable{

    private String name;

    //객체는 하나인데 쓰레드는 여러개
    public void execute(){
        this.name = Thread.currentThread().getName();
        for (int i = 0; i < 100; i++) {
            System.out.println(i+": "+ name);
        }
    }

    @Override
    public void run() {
        execute();
    }

    public static void main(String[] args) throws Exception{

        Ex2 obj = new Ex2();

        new Thread(obj).start();
        new Thread(obj).start();
        new Thread(obj).start();
        new Thread(obj).start();

    }
}

스레드 동기화 문제
멀티 - 스레드는 잘 사용하면 좋은 성능을 내지만, 스데르 간 동기화 문제를 해결해야 함
동기화 문제는 heap에서 발생
스레드 동기화 문제를 해결하기 위해 thread - safe를 해야하는데 사용하는 키워드는 Synchronized

0개의 댓글