쓰레드

남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다.  1. 쓰레드 동기화두 개 이상의 쓰레드가 공유 데이터에 동시에 접근하게 되면 예상과 벗어난 결과가 나타날 수 있다. 이러한 문제를 해결하는 것이 쓰레드 동기화이다.쓰레드 동기화를 이해하기 위해서는 임계영역과 락에 대한 이해가 필요하다.임계영역(Critical section): 여러 쓰레드가 동시에 접근하면 문제가 발생할 수 있는 부분잠금(Lock): 임계 영역에 대한 접근을 제어하기 위한 도구  2. synchronized를 이용한 동기화a. 임계 영역을 지정하는 2가지 방법// 1. 메서드 전체를 임계 영역으로 지정public synchronized void calcSum() { // 임계 영역}// 2. 특정 영역을 임..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 쓰레드의 상태와 실행제어 a. 쓰레드 상태실행대기는 큐와 같은 구조로 먼저 실행대기열에 들어오면 먼저 실행된다.실행 중에 suspend(),sleep(), wait(), join(), I/O Block에 의해 일시정지된 상태가 될 수 있다. (time-out), notifiy(), resume(), interrupt()에 의해 일시정지 상태가 끝나면 실행대기 상태가 된다.상태설명NEW쓰레드가 생성되고 아직 start()가 호출되지 않은 상태RUNNABLE실행 중 또는 실행 가능한 상태BLOCKED동기화블럭에 의해서 일시정지된 상태(lock이 풀릴 때까지 기다리는 상태)WAITING, TIME_WAITING쓰레드의 작업이 종료..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 데몬 쓰레드(Daemon thread)일반 스레드의 작업을 돕는 스레드(보조)일반 스레드가 종료되면 데몬스레드는 자동 종료주로 무한루프와 조건문을 이용해서 실행 후 대기하고 있다가 특정 조건에서 다시 수행boolean isDaemon() // 데몬 스레드일 경우 truevoid setDaemon(boolean on) // true일 경우 데몬스레드가 된다.threadEx th = new threadEx();th.setDaemon(true) // 데몬 스레드th.start(); // 데몬 스레드 시작   데몬 쓰레드 예제public class DaemonThreadEx implements Runnable { static boo..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 싱글쓰레드와 멀티쓰레드a. 싱글쓰레드public class SingleThredTest { public static void main(String[] args) { long startTime = System.currentTimeMillis(); for (int i = 0; i 하나의 작업이 끝나고 다음작업을 진행하게 된다. b. 멀티쓰레드참고로 10코어 환경에서 실행한 예제이다. 싱글 코어의 경우에는 소요시간이 더 오래걸린다.public class MultiThreadTest { static long startTime = 0; public static void main(String[] ar..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 쓰레드 호출 스택쓰레드 별로 별도의 Stack Area(호출 스택), Register, Native Method Stack을 가진다.main 메서드 작업을 수행하는 것도 쓰레드이다.실행 중인 쓰레드가 없으면 프로그램이 종료 2. 쓰레드 생성과 호출 과정main 메서드에서 쓰레드1의 start()를 호출start()는 새로운 쓰레드를 생성하고, 쓰레드가 작업하는데 사용될 호출스택을 생성새로 생성된 호출스택에 run()이 호출되어, 쓰레드가 독립된 공간에서 작업을 수행이제는 호출스택이 2개이므로 스케줄러가 정한 순서에 의해서 번갈아 가면서 실행된다.  한 쓰레드가 예외가 발생해서 종료되어도 다른 쓰레드에게 영향을 미치지 않는다...
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다.  쓰레드를 구현 방법을 알아보기에 앞서 프로세스, 쓰레드가 무엇인지 알아보자.  1. 프로그램 / 프로세스 / 쓰레드a. 프로그램(Program)HDD, SSD와 같은 디스크에 저장된 실행 가능한 파일이다.b. 프로세스(Process)현재 실행 중인 프로그램이다.운영체제에 의해 메모리 공간을 할당받아 실행 중인 것프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 쓰레드 구성된다.c. 쓰레드(Thread)프로세스 내에서 실제로 작업을 수행하는 주체모든 프로세스는 하나 이상의 쓰레드가 존재하여 작업을 수행한다.둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스라고 한다.프로세스의 메모리 한계에 따라 생성할 수 있는 ..
kmindev
'쓰레드' 태그의 글 목록