Java 204

140. 중복을 허용하지 않는 Set – HashSet의 특징

컬렉션 프레임워크 중 Set 계열은 중복된 데이터를 저장하지 않는 특징이 있습니다.그중 HashSet은 가장 기본적인 구현체로, 객체를 저장할 때 순서를 고려하지 않으며, 중복은 자동으로 제거합니다.이번 예제는 HashSet에 중복된 문자열을 추가했을 때, 실제로 저장된 객체 수가 어떻게 되는지를 확인합니다.📌 예제 코드import java.util.HashSet;import java.util.Set;public class HashSetExample { public static void main(String[] args) { Set set = new HashSet(); set.add("Java"); set.add("JDBC"); set.add("JSP"); set.add("Java"); ..

Java/자바 정리 2025.05.20

139. ArrayList vs LinkedList 성능 비교

자바에서 리스트(List)를 구현하는 대표적인 클래스는 ArrayList와 LinkedList입니다.둘 다 List 인터페이스를 구현하지만, 내부 구조가 달라 삽입·삭제·검색 속도에 차이가 있습니다.이번 예제에서는 두 리스트의 앞쪽에 데이터를 삽입할 때 걸리는 시간을 비교해보겠습니다.📌 예제 코드import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class LinkedListExample { public static void main(String[] args) { List list1 = new ArrayList(); List list2 = new LinkedList(); long startTime, ..

Java/자바 정리 2025.05.20

138. Vector로 멀티스레드 환경에서도 안전하게 저장하기

멀티스레드 환경에서 ArrayList와 같은 컬렉션을 사용할 경우,여러 스레드가 동시에 접근하면 데이터 충돌이나 예외가 발생할 수 있습니다.이럴 때는 동기화(Synchronized)가 적용된 Vector 컬렉션을 사용하면 안전하게 처리할 수 있습니다.이번 예제는 두 개의 스레드가 동시에 데이터를 저장할 때 Vector가 어떻게 안정성을 보장하는지 보여줍니다.📦 Board.javapackage ch15.sec02;public class Board { private String subject, content, writer; public Board(String subject, String content, String writer) { setSubject(subject); setContent(conten..

Java/자바 정리 2025.05.20

137. ArrayList로 객체 관리하기 – Board 클래스 예제

ArrayList는 자바에서 가장 많이 사용되는 컬렉션 중 하나로,객체를 동적으로 저장하고 삭제할 수 있는 가변 배열 자료구조입니다.이번 예제에서는 Board라는 사용자 정의 클래스를 ArrayList에 저장하고,출력 및 삭제하는 방법을 실습해보겠습니다.📦 Board.javapackage ch15.sec02;public class Board { private String subject, content, writer; public Board(String subject, String content, String writer) { setSubject(subject); setContent(content); setWriter(writer); } public String getSubject() { ret..

Java/자바 정리 2025.05.20

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
반응형