본문 바로가기

java9

순차적 스트림과 병렬 스트림 우선 자바의 스트림은원본데이터를 변경하지 않는다는불변성 특징을 갖고 있어 데이터 소스 변경 없이 파이프라인 방식으로 함수형 처리를 제공하는 API임. 따로 병렬스트림으로 지정하지 않으면 기본적으로 단일 스레드로 파이프라인을 처리하는 순차 스트림(sequential stream)으로 동작함.List listOfNumbers = Arrays.asList(1, 2, 3, 4);listOfNumbers.stream().forEach(number -> System.out.println(number + " " + Thread.currentThread().getName())); 순차 스트림의 결과는 항상 예측 가능 함.리스트의 element는 항상 순서대로 출력됨.1 main2 main3 main4 main .. 2025. 5. 12.
싱글톤패턴 싱글톤 패턴이란애플리케이션 전역에서 단 하나의 인스턴스만 생성하고 공유(전역 접근) 하기 위한 디자인 패턴임.싱글톤 패턴은 “전역에서 하나로 관리해야 하는 객체”를 깔끔하게 구현하고, 자원 낭비를 막으며 일관된 상태를 보장할 수 있다. - 유일성 보장과 공유자원에 적합한 전역 접근private 생성자로 외부 인스턴스 생성을 막고, static 필드에 자신을 저장한 후,public 메서드 getInstance()와 같은 메서드로 언제 어디서든 동일한 인스턴스를 반환. - 스레드 안정성 고려멀티스레드 환경에선 여러 쓰레드가 동시에 getInstance() 메서드를 호출해 인스턴스 중복생성을 막도록,synchronized, 이른 초기화(Eager Init) 또는 Static Inner Class(Holder).. 2025. 4. 29.
자바 동시성이슈 동시성이슈란,여러 쓰레드가 동시에 공유 자원에 접근하면서 발생하는 문제.→멀티쓰레드 환경에서 여러 쓰레드가 동시에 같은 변수나 객체에 접근해서 값을 읽거나 쓸 때,의도하지 않은 결과(값 꼬임, 덮어쓰기, 데이터 손실 등)가 발생하는 문제이다. 간단한 예제로 알아보자.두 개의 쓰레드는 각각 count를 1씩 10번 더해 최종 count = 20을 기대하고 있다.public class ConcurrencyExample { static int count = 0; public static void main(String[] args) throws InterruptedException { Runnable task = () -> { String threadName = Th.. 2025. 4. 28.
웹소켓을 이용한 채팅 구현하기 spring boot를 이용해 채팅을 구현해 보았다. 사용기술Spring BootJavaWebSocketJSPThymeleaf 웹소켓을 이용한 채팅은 일반 HTTP API와 다르게 연결을 유지한 채 메시지를 주고받는다. 따라서 컨트롤러에는 화면을 렌더링 하는 API만 존재하며, 별도의 웹소켓 설정이 필요하다. 대신 웹소켓을 사용하기 위한 기본 설정이 필요하다.ChatWebSocketHandelr , WebSocketConfig  여기까지 폴더구조는 다음과 같다.📂 src └── 📂 main     └── 📂 java         └── 📂 jpabasic.toyvaserver             ├── 📂 config             │   ├── 📄 ChatWebSocketHandl.. 2025. 4. 1.
Thread Thread에 대해 알아보자~스레드란 프로그램 내부에서 실행되는 하나의 작업 흐름(execution flow)이다.프로세스 내에서 실행되는 작은 작업단위임.같은 스레드 내에서는 데이터 공유가 쉬움. + 프로세스는 실행 중인 프로그램을 의미하며, 프로세스 간에는 데이터 공유가 어렵다.  Java애플리케이션이 실행될 때, JVM이 main 메서드를 호출한다.이때 main 함수가 실행되면 자동으로 하나의 스레드가 할당되는데, 이를 메인 스레드라고 한다.   모든 Java 프로그램은 적어도 하나의 스레드(메인 스레드)를 가지고 있으며,main 함수의 작업은 이 메인 스레드에서 수행된다. Java 프로그램을 실행할 때, 별도로 스레드를 생성하지 않으면 모든 작업은 메인 스레드(Main Thread) 하나로 처리된.. 2025. 3. 5.
JVM JVM에 대해 알아보자. jvm 이란?? Java Virtural Machine의 약자이며, 이 jvm을 통해서 Java가 OS에 독립적으로 작동할 수 있다..java파일(자바 소스 코드)을 javac(자바컴파일러)가 .class파일(자바바이트코드)로 변경해 주고,jvm은 자바 애플리케이션을 클래스 로더를 통해 읽어 자바 API와 함께 실행한다.동작과정 1. 소스 코드 작성 및 컴파일 (Compilation)개발자는 Java 소스 코드(.java 파일)를 작성한 후, 이를 javac(Java Compiler)를 이용해 컴파일한다.컴파일이 완료되면 바이트 코드(.class 파일)가 생성된다.바이트 코드는 JVM에서 실행될 준비가 된 중간 코드(중간 언어)이다.2. 클래스 로딩 (Class Loading)J.. 2025. 2. 26.
반응형