개발/Java 16

Java] Multi Thread 환경에서 Singleton 패턴을 Thread Safe하게 사용하기

Multi Thread 환경에서 Singleton 패턴을 Thread Safe하게 사용하기 해당 글과 관련된 Singleton Pattern을 테스트 해볼 수 있는 git주소를 첨부합니다 🍗 https://github.com/SimYeJu/HelloSingletonPattern/tree/main/src ❓Singleton이란? 하나의 인스턴스만 존재해야 할 경우에 Singleton 패턴을 사용한다. 예를 들어, DBCP(DataBase Connection Pool)나 로그를 기록하는 객체 등 공통된 객체를 여러 다른 클래스에서 사용해야 할 때, 하나의 인스턴스만 생성할 수 있게끔 만드는 것이 좋다. 그 이유는 같은 역할을 하는 객체가 여러개 만들어지지 않는게 메모리 사용면에서 좋기 때문이다. Single..

개발/Java 2021.05.18

Java] ExecutorService란?

❓ ExecutorService란? 병렬 작업 시 여러 개의 작업을 효율적으로 처리하기 위해 제공되는 JAVA 라이브러리이다. ❔ ExecutorService가 없었다면? 각기 다른 Thread를 생성해서 작업을 처리하고, 처리가 완료되면 해당 Thread를 제거하는 작업을 손수 진행해야하는 것을 ExecutorService 클래스를 이용하면 쉽게 처리가능하다. 🎉 ExecutorService ExecutorService에 Task만 지정해주면 친절하게 알아서 ThreadPool을 이용해서 Task를 실행하고 관리한다. 🤹 Task는 뭐로 관리가 되나? Queue로 관리된다. ThreadPool에 있는 Thread수보다 Task가 많으면, 미실행된 Task는 Queue에 저장되고, 실행을 마친 Threa..

개발/Java 2021.04.12

정규표현식

메타 문자 설명 예 | 표현식 논리 OR gr(a|e)y -> "gray" "grey" ^ 입력의 시작부분에 대응된다. /^A/는 "An E"의 A와 대응된다. $ 입력이 끝 부분과 대응된다. /t$/는 "eat"와 대응된다. * ( = {0,}) 앞의 표현식이 0회 이상 연속으로 반복되는 부분과 대응된다. /bo*/ -> "boooed", "A bird warbled" X-> "A goat grunted" ab*c -> "ac" "abc" "abbc" "abbbc" +( = {1,}) 앞의 표현식이 1회 이상 연속으로 반복되는 부분에 대응된다. /a+/ -> "candy", "caaaandy" X->"cndy" ab+c -> "abc" "abbc" "abbbc" X-> "ac" ? ( = {0,1}) ..

개발/Java 2020.08.18

Java G1GC

1. www.oracle.com/java/technologies/javase/hotspot-garbage-collection.html The Garbage First Garbage Collector (G1 GC) Introduction G1 GC는 Oracle JDK 7 update 4 릴리즈 이후부터 완전히 지원 G1 GC는 큰 메모리를 사용하는 multi-processor machine들을 위한 server-style garbage collector이다. GC는 높은 처리량을 달성하는 동안 높은 확률로 pause time goal에 닿는다. global marking같은 전체 heap 운영은 application thread와 동시에 수행되는데, 이것은 heap 또는 live-data size에 비례..

개발/Java 2020.08.13

Java] Do it 자바 프로그래밍 입문 요약 (셋째마당 - 12)

12) 컬렉션 프레임워크 제네릭이란? 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍하는 것을 '제네릭(Generic) 프로그래밍'. 참조 자료형이 변환될 때 이에 대한 검증을 컴파일러가 하므로 안정적이다. '컬렉션 프레임워크'도 많은 부분이 제네릭으로 구현되어있다. ex) 3D프린터 재료는 파우더, 플라스틱 액체 등 여러 재료를 사용할 수 있습니다. public class ThreeDPrinter{ private Object material; public void setMaterial(Object material){ this.material = material; } public Object getMaterial(){ return material; } } 이 때, 아..

개발/Java 2019.06.18