Java57 [Java] synchronized를 활용한 멀티스레드 동기화 처리 안녕하세요.오늘은 자바의 동기화(Synchronization) 개념을 활용해서 멀티스레드 환경에서 발생할 수 있는 데이터 충돌 문제와 이를 해결하는 방법을 살펴보겠습니다.동기화(Synchronization)란?동기화는 프로세스 또는 스레드들이 수행되는 시점을 조절하여 서로가 알고 있는 정보를 일치시키는 것을 말합니다. 여러 스레드가 동시에 하나의 공유 자원(예: 변수, 객체 등)에 접근할 때, 데이터 충돌(Data Race)이나 불일치와 같은 문제가 생길 수 있습니다. 은행 계좌를 예로 들어보겠습니다. 계좌에는 잔액(balance)이 있고, 여러 스레드가 동시에 입금과 출금을 처리한다고 가정해 봅시다. 동기화를 하지 않을 경우, 아래와 같은 상황이 발생할 수 있습니다.데이터 손실: 두 스레드가 동시에 잔.. 2025. 3. 13. [JAVA] 도서 대여 시스템으로 객체 지향 프로그래밍 (OOP) 개념 익히기 안녕하세요 이번 시간에는 Java의 객체지향 프로그래밍 (OOP, Object-Oriented Programming) 주요 개념인 클래스, 객체, 상속, 인터페이스를 적용하여 도서 대여 시스템을 구현한 예제를 작성해보겠습니다. 1. 객체지향 개념 정리 1.1 클래스(Class)란?클래스는 객체를 생성하기 위한 설계도입니다. 클래스 내부에는 속성(변수)과 행동(메서드)이 정의되어 있으며, 이를 기반으로 여러 개의 객체를 만들 수 있습니다.예를 들어, Book 클래스는 책의 제목과 저자를 저장하는 속성을 가지고 있고, 책을 대여하거나 반납하는 기능(메서드)을 제공합니다.1.2 객체(Object)란?객체는 클래스의 인스턴스로, 클래스의 구조를 실제 데이터와 함께 메모리에 생성한 것입니다. 즉, 클래스는 틀.. 2025. 3. 12. [JAVA] Thread와 Runnable 안녕하세요. 오늘은 java에서 멀티스레드를 구현하는 방법 중 Thread와 Runnable 의 차이에 대해 알아보겠습니다. 먼저 두 가지 방식은 다음과 같습니다. 1. Thread 클래스를 상속하는 방법2. Runnable 인터페이스를 구현하는 방법 이 두 방법은 겉으로는 비슷해 보이나, 확장성, 코드구조, 사용목적에 차이가 있습니다. 1. Thread - Thread 클래스를 상속하는 방법- 다른 클래스를 상속할 수 없음- 코드 재사용성이 낮음 (같은 로직을 다른 곳에서 재사용하려면 Thread 를 다시 만들어야 함)- 객체 공유가 불가능함 (각 Thread 객체가 독립적임, Thread 인스턴스 자체가 실행됨) class MyThread extends Thread { private i.. 2025. 3. 9. [Java] 스레드를 활용해서 여러 파일 동시에 다운로드 받기 안녕하세요.오늘은 스레드(Thread)를 활용해 여러 파일을 동시에 다운로드하는 프로그램을 만들어보겠습니다. 스레드는 하나의 프로세스 내에서 실행되는 작은 작업 단위입니다. 자바에서는 Thread 클래스를 상속받거나 Runnable 인터페이스를 구현하여 스레드를 생성할 수 있습니다. 스레드를 활용하면 여러 작업을 동시에 실행할 수 있습니다. 1. FileDownloader 클래스 작성Thread 클래스를 상속받아 스레드로 동작합니다.생성자에서 다운로드할 파일의 URL과 로컬 저장 경로를 전달받습니다.run() 메서드에서 파일 다운로드 로직을 구현합니다.URL 스트림을 열어 데이터를 읽고, 로컬 파일 스트림을 열어 데이터를 씁니다.다운로드 시작과 끝의 시간을 기록하여 소요 시간을 계산합니다.import j.. 2025. 3. 6. [JAVA] JVM 메모리 구조 알아보기 안녕하세요, 오늘은 Java 프로그림이 실행되는 환경인 JVM(Java Virtual Machine)의 메모리 구조에 대해 알아보겠습니다. JVM(Java Virtual Machine)이란?JVM은 Java 프로그램을 실행하는 가상 머신 입니다. java 코드는 cpu가 직접 실행할 수 없고, JVM이 바이트 코드로 변환해서 실행합니다. 따라서 OS관계없이 실행할 수 있습니다. JVM은 실행 중 메모리를 관리하고, GC(Garbage Collection)로 불필요한 객체를 정리해 줍니다. JVM 구조JVM은 크게 3개의 영역으로 나뉩니다. 1. 클래스 로더(Class Loader) : .class 파일 로드 2. 런타임 데이터 영역(Runtime Data Area) : java 실행에 필요한.. 2025. 3. 2. [JAVA] WeakReference, SoftReference 사용법 안녕하세요, 오늘은 메모리 누수 방지를 위한 WeakReference, SoftReference 사용법에 대해 알아보고자 합니다. 먼저, 참조(Reference)란, 객체의 메모리 주소를 가리키는 변수를 의미합니다. Java에서 모든 객체(클래스의 인스턴스)는 참조를 통해 접근하고, 참조가 없으면 해당 객체는 더 이상 사용할 수 없습니다. Java의 참조(Reference)는 4가지 종류가 있습니다. StrongReference기본적인 java 객체의 참조 형식, new를 통해 객체를 생성하는 경우의 참조 형식GC가 제거하지 않음 (명시적으로 null 할당해야 해제됨) WeakReferenceJVM의 Garbage Collector(GC)가 더 쉽게 객체를 수거할 수 있도록 하는 참조 타입GC가.. 2025. 2. 23. [JAVA] 자바 인텔리제이에서 DB 데이터베이스 접속하기 이번에는 JAVA에서 MYSQL DB에 접속하여 데이터 조회 및 저장도 해보겠습니다.작업 환경은 윈도우에서 작업했으며 JAR 파일을 직접다운받아 인텔리제이에 삽입해보겠습니다. 먼저 https://dev.mysql.com/downloads/connector/j/?os=26 에서 mysql-connector-j-9.0.0 파일을 다운 받습니다. 다운로드 받은 파일을 압축해제 합니다. 그 다음 인텔리제이를 실행하여 projecStructure 를 실행합니다 JAR 파일을 추가 항목을 누른 후 추가가 된것을 확인 할 수 있습니다. 자바 코드입니다.import java.sql.*;public class ConnectMySQL { public static Statement stmt; public stat.. 2024. 8. 27. [JAVA] 인텔리제이 IntelliJ IDEA JAR 파일 생성/ 만들기 JAR파일 만든 OS환경은 윈도우입니다. [윈도우 유저는 ctrl + shift + alt + s]JAR파일을 만들 클래스를 선택합니다 여기까지 했으면 다시 빌드로 들어가서빌드로 선택되어있는지 확인하고 jar을 클릭하세요여기까지하며 JAR 파일을 만들었습니다! 시연영상 2024. 8. 21. [JAVA]3항 연산자 사용하기 오늘은 3항 연산자(ternary operator)를 사용하는 예시를 보여드리겠습니다. 3항연산자(ternary operator)란 3개의 피연산자(조건, 참일때의 값, 거짓일때의 값)를 활용해 조건 결과에 따라 하나의 값을 반환하는 연산자 입니다. if-else 조건문 내용을 더 간결하게 표현할 수 있다는 장점과 중첩된 복잡한 조건을 표현하는 경우 가독성이 떨어진다는 단점을 가지고 있어 단순한 조건을 표현시 활용하기 좋습니다. 구조 조건 : 참 또는 거짓을 평가하는 표현식입니다.참일 때의 값 : 조건이 참일 경우 반환되는 값 또는 표현식입니다.거짓일 때의 값 : 조건이 거짓일 경우 반환되는 값 또는 표현식입니다. ? 와:를 사용하여 식을 표현하며 ?는 조건과 반환값들 사이 구분자 역할, :는 참.. 2024. 5. 29. 이전 1 2 3 4 5 ··· 7 다음