전체 글161 Mutable & Immutable Mutable & Immutable Mutable Object 개념 자바에서 class의 인스턴스로 생성된 이후로 내용이 변경 가능한 객체 멀티 스레드 환경에서는 동시성 이슈로 인하여 동기화 처리가 필요하다. 대표적으로 ArrayList, HashMap, StringBuilder, StringBuffer 존재 Immutable Object 개념 자바에서 class의 인스턴스가 생성된 이후로 내용이 변경 불가능한 객체 멀티 스레드 환경에서도 안전하게 사용할 수 있다. 대표적으로 String이 존재 프로그래머가 커스텀하여 불변 객체 생성 가능 장점 Thread-safe 멀티 스레드 환경에서 공유 자원에 대하여 항상 같은 값을 반환하기 때문에 동기화 과정이 필요 없다. 실패 원자적인 메서드 생성 가능 가변 객.. 2023. 3. 25. Concurrency Issue Concurrency Issue 개념 동시성 이슈 멀티 스레드 환경에서 공유 자원에 대한 접근으로 인해 발생하는 문제 해결 방법 Synchronized synchronized 키워드가 붙은 메서드에는 하나의 스레드만 접근 가능 모든 공유 자원 가능성이 있는 영역에 synchronized 하는 것은 비현실적이고 성능도 저하된다. Atomic, Concurrent java.util.concurrent.*의 대표적인 클래스로 atomic과 concurrent가 존재 volatile을 통해 메인 메모리에 있는 값을 바로 가져올 수 있다. jvm에서는 cpu 메모리 영역에 데이터를 캐싱하는 값을 가져오는데 volatile을 사용하면 메인 메모리에서 바로 값을 가져와 최신의 데이터를 확인할 수 있다. CAS(Com.. 2023. 3. 24. Throwable Throwable Error 개념 Throwable 클래스를 상속받는 에러 클래스 시스템에 비정상적인 상황이 발생하였을 경우 에러 발생 OutOfMemoryError 나 StackOverFlow와 같이 복구할 수 없는 경우 Exception 개념 Throwable 클래스를 상속받는 Exception 클래스 예외는 개발자의 실수로 발생하는 상황 심각하지 않아 프로그램을 복구할 수 없는 수준이 아닌 경우 Checked Exception RuntimeException의 하위 클래스가 아닌 Exception 상속 클래스 컴파일 타임에서 확인할 수 있는 exception try catch로 예외처리를 강제한다.(컴파일 타임에서 처리가 되지 않으면 프로그램 실행이 불가하기 때문) 예외 발생 시 transaction.. 2023. 3. 23. Static Static 개념 static 키워드 변수와 메서드 앞에 붙여 정적 필드, 정적 메서드로 사용 가능 정적 필드, 정적 메서드를 합쳐서 클래스 멤버라 부른다. 특징 클래스 로더가 메서드 영역에 클래스를 로드할 때 클래스별로 관리 클래스 로딩이 끝나면 즉시 사용 가능 static 메서드의 경우 객체 선언하지 않아도 사용 가능 정적 멤버들은 static 영역에 할당되기 때문에 GC가 활동하는 heap 영역이므로 프로그램 종료 시까지 메모리에 잔존 static을 남발하면 시스템에 악영향을 줄 수 있다. Reference https://coding-factory.tistory.com/524 2023. 3. 22. 이전 1 ··· 12 13 14 15 16 17 18 ··· 41 다음