티스토리 뷰

카테고리 없음

Java 멀티스레드

더블제로스톤 2016. 10. 3. 20:03

단일 스레드

자바의 메인 스레드만을 이용함


멀티 스레드

메인 스레드 이외의 추가 스레드를 생성 및 사용


사용 방법

1>Runnable 인터페이스

class Task implements Runnable {

    public void run() {

        // Code 

    }

}

Thread thread = new Thread(new Task());

thread.start(); //Thread 시작


2>Thread 상속

public void workingThread extends Thread {

    @Override 

    public void run() {

        // Code

    }

}

Thread thread = new workingThread();

thread.start();


3>익명 구현 객체 사용

Thread thread = new Thread(new Runnable() {

    public void run() {

        // Code

    }

});


//Java8 람다식 이용

Thread thread = new Thread( () => {

    // Code

});


동시성

멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행하는 성질

우선순위(코드로 제어 가능)와 순위할당(JVM이 제어) 방식이 있음

thread.setPriority(Priority); //스레드 우선순위 정하기 (1<=Priority<=10)

thread.setPriority(Thread.MAX_PRIORITY);

thread.setPriority(Thread.MIN_PRIORITY);

thread.setPriority(Thread.NORM_PRIORITY);


임계영역 제어

동기화(synchronized) 메소드와 동기화 블록 사용

public synchronized void method() {

    critical Section; // 

}


//메소드 일부만 임계영역으로 처리 할 때

public void method() {

    ...

    synchronized(sharedObject) {

        critical Section;

    }

    ... 

}


참고

http://palpit.tistory.com/726

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
Today
Yesterday
글 보관함