2025/05/19 9

[ 24일차 129~136 ] 수업 정리 - 자바

💡 오늘의 핵심 주제멀티스레드 제어와 동기화, 스레드 안전 종료, wait/notify 활용📌 주요 학습 내용📦 ThreadNameExample.javapublic class ThreadNameExample { public static void main(String[] args) { Thread mainThread = Thread.currentThread(); System.out.println(mainThread.getName()); for (int i = 0; i 💬 설명Thread.currentThread().getName()으로 현재 실행 중인 스레드 이름 확인 가능setName()으로 사용자 정의 스레드 이름 설정 가능📦 SleepExample.javapublic class Slee..

국비 2025.05.19

136. interrupt()로 스레드 종료하기 – sleep 중인 스레드 깨우기

스레드를 안전하게 종료하는 또 다른 방법은 interrupt()를 활용하는 방식입니다.이 방법은 스레드가 sleep(), wait() 등으로 일시정지 상태일 때 강제로 깨워서 종료 흐름으로 전환할 수 있습니다.특히 외부에서 스레드의 종료를 제어해야 할 경우 자주 사용되는 방식입니다.📦 PrintThread.javapackage ch14.sec07.exam02;public class PrintThread extends Thread { public void run() { try { while (true) { System.out.println("실행 중"); Thread.sleep(1); // 잠시 대기하며 반복 } } catch (Exception e) { // interrupt..

Java/자바 정리 2025.05.19

135. 안전하게 스레드 종료시키기 – 플래그 활용

자바에서 스레드를 강제로 종료하는 stop() 메서드는 이미 Deprecated 처리되어 있으며,사용할 경우 리소스 정리가 되지 않거나 예기치 않은 동작이 발생할 수 있습니다.따라서 일반적으로는 플래그 변수를 사용하여 스레드가 스스로 종료하도록 유도하는 방식이 권장됩니다.📦 PrintThread.javapackage ch14.sec07;public class PrintThread extends Thread { private boolean stop; public void setStop(boolean stop) { this.stop = stop; } public void run() { while (!stop) System.out.println("실행중"); System.out.println("리..

Java/자바 정리 2025.05.19

134. 스레드 간 협업 – wait()과 notify()

멀티스레드 환경에서는 여러 스레드가 순서를 정해가며 번갈아 작업해야 하는 상황이 발생할 수 있습니다.이때 wait()과 notify()를 사용하면, 한 스레드가 작업을 마치면 다른 스레드가 이어서 작업하도록 제어할 수 있습니다.이번 예제는 두 스레드가 methodA()와 methodB()를 교대로 실행하는 구조를 보여줍니다.📦 WorkObject.javapackage ch14.sec06;public class WorkObject { public synchronized void methodA() { Thread thread = Thread.currentThread(); System.out.println(thread.getName() + ": methodA 작업 실행"); notify(); // ..

Java/자바 정리 2025.05.19

133. 스레드 충돌 막기 – synchronized로 동기화 처리

멀티스레드 환경에서는 여러 스레드가 하나의 객체에 동시에 접근하게 되면,데이터가 뒤섞이거나 원하는 결과가 출력되지 않는 문제가 발생할 수 있습니다.이러한 문제를 방지하기 위해 synchronized 키워드를 사용하면,동시에 하나의 스레드만 메서드에 접근하도록 제한할 수 있어 안전한 동작을 보장할 수 있습니다.📦 Calculator.javapackage ch14.sec06;public class Calculator { private int memory; public int getMemory() { return memory; } public void setMemory(int memory) { this.memory = memory; } public synchronized void setMemory1(i..

Java/자바 정리 2025.05.19

132. 스레드 양보하기 – Thread.yield() 활용

이번 글에서는 Thread.yield()를 사용하여스레드가 스스로 실행을 양보하는 방식을 실습합니다.두 개의 작업 스레드 중 하나가 일시적으로 작업을 중지하고,다른 스레드에게 CPU를 넘기는 방식을 구현해 봅니다.📌 예제 코드✅ WorkThread.javapackage ch14.sec05;public class WorkThread extends Thread { public boolean work = true; // 작업 수행 여부 public WorkThread(String name) { setName(name); // 스레드 이름 설정 } public void run() { while (true) { if (work) ..

Java/자바 정리 2025.05.19

131. 스레드가 끝날 때까지 기다리기 – join() 활용 예제

이번 글에서는 join() 메서드를 사용해서다른 스레드가 실행을 마칠 때까지 현재 스레드를 일시정지시키는 방법을 배워봅니다.이 기능은 스레드 작업 결과를 사용해야 할 때, 필수적으로 사용하는 흐름 제어 방식입니다.📌 예제 코드✅ 합계 계산 스레드 (SumThread.java)package ch14.sec05;public class SumThread extends Thread { private long sum; public long getSum() { return sum; } public void run() { for (int i = 1; i ✅ 메인 클래스 (JoinExample.java)package ch14.sec05;public class JoinEx..

Java/자바 정리 2025.05.19

130. 일정 시간마다 반복하기 – Thread.sleep()과 스레드 제어 메서드 총정리

이번 글에서는 Thread.sleep()을 사용하여1초 간격으로 소리와 메시지를 반복 출력하는 예제를 실습합니다.그리고 스레드 흐름 제어에 사용되는 주요 메서드들에 대해 함께 정리합니다.📌 예제 코드import java.awt.Toolkit;public class SleepExample { public static void main(String[] args) { Toolkit toolkit = Toolkit.getDefaultToolkit(); for (int i = 0; i 💻 실행 결과beep-!(1초 후)beep-!(1초 후)...총 10회 반복💡 1초마다 "beep-!" 메시지 출력과 함께 시스템 비프음이 울림OS에 따라 소리가 들리지 않을 수 있음💬 코드 설..

Java/자바 정리 2025.05.19

129. 스레드 이름 지정과 확인 – getName()과 setName()

이번 글에서는 자바에서 스레드의 이름을 확인하고,직접 이름을 설정하는 방법을 실습합니다.스레드 이름은 로그 출력, 오류 추적, 디버깅 등에서 식별에 매우 중요한 역할을 합니다.📌 예제 코드public class ThreadNameExample { public static void main(String[] args) { // 현재 실행 중인 main 스레드 정보 확인 Thread mainThread = Thread.currentThread(); System.out.println(mainThread.getName()); // 기본: main // 이름이 자동 부여되는 스레드 3개 생성 for (int i = 0; i 💻 실행 결과 예시..

Java/자바 정리 2025.05.19
반응형