WEB개발/JAVA (9) 썸네일형 리스트형 Daemon Thread vs User Thread Daemon Thread vs User ThreadJava에서 스레드는 크게 User Thread(사용자 스레드) 와 Daemon Thread(데몬 스레드) 로 나뉩니다. 1. User Thread (사용자 스레드)✅ 특징기본적으로 생성되는 스레드는 모두 User Thread메인 스레드(Main Thread)도 사용자 스레드모든 사용자 스레드가 종료될 때까지 JVM은 종료되지 않음✅ 예제public class UserThreadExample { public static void main(String[] args) { Thread userThread = new Thread(() -> { for (int i = 0; i 메인 스레드 종료 User Thread 실행 중.... CyclicBarrier, CountDownLatch `CyclicBarrier` 는 여러 개의 스레드가 모두 특정 지점(Barrier)에 도달할 때까지 기다렸다가, 동시에 실행을 재개하도록 하는 동기화 도구입니다."Cyclic"이라는 이름처럼 반복해서(barrier를 다시 사용할 수 있음) 사용할 수 있음CountDownLatch와 달리 모든 스레드가 도착해야만 다음 단계로 진행 package com.example;import java.util.concurrent.CyclicBarrier;public class CyclicBarrierReuseExample { public static void main(String[] args) { int numThreads = 3; CyclicBarrier barrier = new Cycl.. 제너릭 Generic Java의 제너릭(Generic) 타입은 클래스나 메서드에서 사용할 데이터 타입을 컴파일 시에 지정할 수 있도록 하는 기능입니다. 제너릭은 타입 안정성을 제공하고, 캐스팅 작업을 줄여 코드를 더 간결하고 안전하게 만듭니다. 1. 제너릭 클래스class Box { private T value; public T getValue() { return value; } public void setValue(T value) { this.value = value; }}public class GenericClassExample { public static void main(String[] args) { // Integer 타입의 Box B.. 메서드 참조, function, consumer, supplier 메서드 참조 사용법 메서드 참조는 ClassName::methodName 형식으로 사용하며, 다음 네 가지 유형으로 나뉩니다: 1. Static 메서드 참조: ClassName::staticMethodimport java.util.function.Function;public class StaticMethodReference { public static int square(int x) { return x * x; } public static void main(String[] args) { // 람다 표현식 Function squareLambda = x -> StaticMethodReference.square(x); // 메서드 참조 .. [JAVA] 메모리 스택, 힙 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 합니다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있습니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 4가지가 있습니다. 코드(code) 영역 데이터(data) 영역 스택(stack) 영역 - 지역 변수 메서드, 생성자, 초기화 블록 내에서 선언되고 사용됩니다. 스택 메모리에 저장되며, 메서드나 생성자의 실행이 끝나면 메모리에서 사라집니다. 힙(heap) 영역 - 인스턴스 변수 클래스 내부에서, 메서드 밖에서 선언되고 사용됩니다. 힙 메모리에 저장되며, 객체가 생성될 때 생성되며 객체가 사라질 때까지 유지됩니다.. [JAVA] Thread-Safe, Concurrent Collection class, Double Checked Locking synchronized서버에 동시에 여러 request다 요청될 경우 data의 안정성과 신뢰성을 보장할 수 없습니다.따라서 data의 thread-safe 를 하기 위해 자바에서는 synchronized 키워드를 제공해 스레드간 동기화를 시켜 data의 thread-safe를 가능케합니다. Synchronized 키워드는 변수와 함수에 사용해서 동기화 할 수 있습니다.하지만 Synchronized 키워드를 너무 남발하면 오히려 프로그램 성능저하를 일으킬 수 있습니다. 동기화 메서드메서드 전체를 동기화하여 한 스레드가 메서드를 실행하는 동안 다른 스레드의 접근을 막습니다.public class Counter { private int count = 0; // synchronized 메서드 .. JMX(MBean), JOLOKIA, SpringBoot, Actuator JMX(Java Management Extensions) JMX(Java Management eXtensions)는 응용 프로그램(소프트웨어)/객체/장치 (프린터 등) 및 서비스 지향 네트워크 등을 감시 관리를 위한 도구를 제공하는 자바 API이다. JDK 1.5 이상부터 기본적으로 탑재된 기능 자바 어플리케이션의 모니터링과 관리 기능을 제공한다. Non-Java Resource와 하드웨어에 대해 wrapping한 인터페이스를 제공하며, API를 외부로 노출해 application 설정 및 통계데이터를 수집할 수 있는 기능을 제공한다. mBean으로 알려진 하나 이상의 사용자 JavaBean 오브젝트를 통해(혹은 리소스를 호출하는) 애플리케이션, 디바이스, 서비스를 원격으로 제어할 수 있다. mBean.. [JAVA] 객체 직렬화 serialization, IOStream 1. 직렬화 serialization직렬화 serialization객체에 저장된 데이터를 스트림에 쓰기 위해 연속적인 데이터로 변환하는 것을 말한다. 반대로 스트림에서 데이터를 읽어 객체로 변환하는 것을 역직렬화(deserialization)라 한다. 역직렬화, deserialize역직렬화는 ObjectInputStream의 readObject()를 이용한다. 다만 한 가지 주의 사항이 있는데 하나 이상의 객체를 직렬화 했을 경우 반드시 같은 순서로 역직렬화 해야 한다는 것이다. package test.serialize;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;impo.. 이전 1 2 다음