728x90
반응형

JAVA 27

[Java] Lock - ReentrantLock

Lock 멀티스레드, 동시성 프로그래밍에서 가장 중요한 개념은 Thread와 Lock입니다. 하나의 자원에 대해 여러 Thread가 동시에 접근하는 것을 도와주는 도구입니다. Synchronized, 동기화하거나, 아니면 접근 자체를 직렬화한다고 표현합니다. 멀티스레드 환경에서 여러 Thread가 Heap 메모리에 있는 객체나 자원을 접근할 때 동기화를 통해 접근을 통제해야 합니다. Lock을 통해서 공유 자원을 한 Thread만 접근할 수 있도록 통제할 수 있습니다. Lock 기능 특정 조건에 다라 지정한 수의 Thread만 자원에 접근하게 할 수 있습니다. 접근을 못한 Thread들은 줄을 세워, 대기하게 하고 들어갈 수 있을 때 다시 동작하게 할 수 있습니다. → 대기 상태의 Thread는 Slee..

JAVA 2022.12.08

[Java] 리스트를 만드는 방법 3가지 (ArrayList, Arrays, List)

자바에서 List를 만드는 방법은 3가지가 있습니다. 1) import java.util.ArraysList; List numberList = new ArrayList(); 2) import java.util.Arrays; List numberList = Arrays.asList(); 3) import java.util.List; List numberList = List.of(); 3가지 방법의 차이점 Element add & remove setter null 1) new ArrayList() 가능 가능 가능 2) Arrays.asList() 불가능 가능 가능 3) List.of 불가능 불가능 불가능 Element add & remove가 불가능한 방법에서 add를 사용할 경우, UnsupportedOp..

JAVA 2022.12.02

[Java] Mutable & Immutable

Mutable과 Immutable mutable 변할 수 있는, 잘 변하는 / Java: 가변 객체 immutable 변할 수 없는, 불변의 / Java: 불변 객체 Java Object 자바 객체는 기본적으로 Heap 영역에 할당되고, Stack 영역에 참조값을 갖는 참조 타입 변수를 통해 데이터에 접근합니다. 이러한 객체는 Mutable Object, Immutable Object로 나눌 수 있습니다. [Java] 메모리 관리 - 스택, 힙, Garbage Collection Stack 영역 Heap 영역에 생성된 객체 타입의 데이터들에 대한 참조를 위한 값들이 할당됩니다. 원시타입(Primitive Types) - byte, short, int, long, double, float, boolean,..

JAVA 2022.11.23

[Java] 자바 메모리 영역 관련 노트 정리

블로그 포스팅을 보고 다시 한번 적으면서 메모리 영역 관련 내용 정리하였습니다. [관련 포스팅] [Java] 메모리 관리 - 스택, 힙, Garbage Collection Stack 영역 Heap 영역에 생성된 객체 타입의 데이터들에 대한 참조를 위한 값들이 할당됩니다. 원시타입(Primitive Types) - byte, short, int, long, double, float, boolean, char 타입의 데이터들이 할당됩니다.. lakelight.tistory.com [참고] 1. [JAVA] ☕ 그림으로 보는 자바 코드의 메모리 영역(스택 & 힙)

JAVA 2022.10.24

[Java] Thread Local

ThreadLocal 스레드 단위로 로컬 변수를 사용할 수 있다는 장점이 있습니다. 또한 여러 메서드를 전역변수처럼 사용할 수 있습니다. 다만 다른 스레드와 변수가 공유되지 않도록 주의해야 합니다. ThreadLocalMap private 클래스로 구성되어 있어 외부에서 접근할 수 없고, 내부적으로 해시 테이블 정보를 갖고 있는데, 요소는 WeakReference를 확장하고 ThreadLocal 객체를 키로 사용하는 Entry 클래스입니다. Thread ThreadLocalMap를 타입 멤버 필드로 가지고 있는데, 특정 스레드의 정보를 TreadLocal에서 직접 호출 할 수 있도록 합니다. ThreadLocal의 withInital 메서드 쓰레드 로컬 변수를 생성하면서 특정 값으로 초기화하는 메서드입니..

JAVA 2022.10.24

[Java] Collection - Map

Collection Java Collection의 주요 인터페이스는 List, Set, Map이 있습니다. 인터페이스를 구분하는 가장 중요한 개념은 "순서", "데이터 중복 여부" 입니다. List - 순서가 있고, 데이터 중복이 가능합니다. Set - 순서가 없고, 데이터 중복이 불가능합니다. Map - Key, Value 구조로 데이터가 저장되고, Key는 중복이 불가능하지만 Value는 중복이 가능합니다. Map Key와 Value로 구성된 객체를 저장합니다. 키는 중복될 수 없고, 값은 중복이 가능합니다. Map 인터페이스를 구현한 클래스 종류 HashMap TreeMap LinkedHashMap HashTable HashMap 기본 메서드 HashMap 선언 Map map = new HashMa..

JAVA 2022.09.19

[Java] Collection - Set

Collection Java Collection의 주요 인터페이스는 List, Set, Map이 있습니다. 인터페이스를 구분하는 가장 중요한 개념은 "순서", "데이터 중복 여부" 입니다. List - 순서가 있고, 데이터 중복이 가능합니다. Set - 순서가 없고, 데이터 중복이 불가능합니다. Map - Key, Value 구조로 데이터가 저장되고, Key는 중복이 불가능하지만 Value는 중복이 가능합니다. Set 중복된 요소를 포함할 수 없는 인터페이스입니다. List와 다르게 인덱스를 사용하지 않기 때문에, 인덱스 매개변수가 없습니다. Set 인터페이스의 메서드는 아래와 같습니다. Set 인터페이스를 구현한 클래스 종류 HashSet Linked HashSet TreeSet HashSet 해싱이라..

JAVA 2022.09.19

[Java] Collection - List

Collection Java Collection의 주요 인터페이스는 List, Set, Map이 있습니다. 인터페이스를 구분하는 가장 중요한 개념은 "순서", "데이터 중복 여부" 입니다. List - 순서가 있고, 데이터 중복이 가능합니다. Set - 순서가 없고, 데이터 중복이 불가능합니다. Map - Key, Value 구조로 데이터가 저장되고, Key는 중복이 불가능하지만 Value는 중복이 가능합니다. List List는 데이터를 순서에 맞게 일렬로 구성합니다. 인덱스가 부여되기 때문에 인덱스로 데이터를 검색할 수 있습니다. 그리고 List는 Set과 다르게 중복을 허용합니다. List 인터페이스를 구현한 클래스 종류 ArrayList AttributeList CopyOnWriteArrayLis..

JAVA 2022.09.19

[Java] JDK 동적 프록시

JDK 동적 프록시 프록시는 타겟 코드의 수정없이 접근제어, 부가기능을 추가하기 위해 주로 사용됩니다. 하지만, 프록시를 사용하기 위해서는 대상 클래스 만큼 프록시 클래스를 만들어줘야하기 때문에 코드 중복이 발생한다는 단점이 있습니다. 이를 해결할 수 있는 기술이 동적 프록시 기술입니다. 동적 프록시 기술은 개발자가 직접 프록시 클래스를 만들지 않아도 되고, 런타임에 개발자 대신 동적으로 객체를 생성해줍니다. 또한 동적 프록시에 원하는 로직을 지정할 수도 있습니다. JDK 동적 프록시 구현 JdkDynamicProxyInterface public interface JdkDynamicProxyInterface { String call(); } JdkDynamicProxyImpl @Slf4j public c..

JAVA 2022.08.24

[Java] Reflection

Java Reflection 클래스, 인터페이스, 메소드들을 찾을 수 있고, 객체를 생성하거나 변수를 변경할 수 있습니다. 또한 메소드를 호출할 수도 있습니다. Reflection은 자바에서 기본적으로 제공하는 API이고, 사용방법만 알면 라이브러리 추가 없이 사용할 수 있습니다. Java Reflection 사용 Reflection 예제에서 사용할 클래스 @Slf4j public class ReflectionEX { @Slf4j static class MethodCall{ public String MethodOne(){ log.info("method One Call"); return "One"; } public String MethodTwo(){ log.info("method Two Call"); re..

JAVA 2022.08.24
728x90
반응형