목록Runnable (3)
개발 무지렁이

𐂂 스레드(Thread) 개수가 폭증하면 CPU가 바빠지고 메모리 사용량이 늘어난다. 병렬작업 증가로 인한 스레드 폭증을 막으려면 스레드풀(ThreadPool)을 사용하는 것이 좋다 스레드풀(ThreadPool)은 작업처리에 사용되는 스레드 개수를 제한해 놓고, 작업 큐(Queue)에 들어오는 작업들을 처리하는 방식을 말한다. 작업량이 증가해도 스레드 개수가 늘어나지 않아 성능저하를 막을 수 있다. 𐁍 스레드풀(ThreadPool) 생성 java.util.concurrent 패키지에서 Executors 클래스의 정적메서드를 이용하여, ExecutorService 인터페이스를 구현한 구현객체를 만들어 생성한다. 🌵 Executors 클래스의 정적메서드 - newCachedThreadPool() : 작업개수..

𐁍 스레드 동기화 멀티스레드는 공유객체에 서로 접근할 수 있다. 다른 스레드에 의해 공유객체의 내부데이터가 쉽게 변경되기 때문에, 하나의 스레드가 접근할 때, 다른 스레드가 접근하지 못하도록 작업이 끝날 때까지 객체에 잠금(Lock🔒)을 걸어야 한다. (그렇지 않으면 의도치 않은 결과가 나올 수 있다.) 이를 위해, 자바는 동기화 메서드 및 동기화 블록을 제공한다. ➼ 🦔 동기화 메서드 및 동기화 블록 ⚠️ 공유객체 내부에 동기화 메서드 및 동기화 블록을 정의해 놓는다. 🕹️ 동기화 메서드 (동기화 메서드를 실행하는 즉시, 🔒객체잠금이 일어나고, 실행이 끝나면 잠금이 풀린다.) public synchronized void method() { //하나의 스레드만 실행할 수 있는 영역 } 🍫 동기화 블록 (..

➼ 🦔 스레드(Thread) 이름 지정 thread.setName("[스레드 이름]") ⚠️ 스레드 이름을 지정하지 않으면 "Thread-n" ⭐ 어떤 스레드가 현재 코드를 실행하고 있는지 check Thread thread = Thread.currentThread(); System.out.println(thread.getName()); 𐁍 스레드 상태 ⚠️ 스레드 객체를 생성하고, start() 메서드를 호출하면, 바로 스레드가 실행되는 것이 아니다. 실행대기상태(RUNNABLE)로 넘어가고, CPU 스케쥴링에 따라, 해당 스레드가 CPU를 점유할 때 run() 메서드를 실행한다. 이 때 실행상태(RUNNING)가 되며, 스레드는 RUNNABLE과 RUNNING을 번갈아가며 run() 메서드를 조금씩 ..