본문 바로가기

Tech/Java14

Java collection - Set Java Collection은 객체 그룹을 나타내며, 저장 및 검색 방법에 따라 Set, Map, List 로 나뉘어진다.간단히 요약하면 Set에는 중복 값을 허용하지 않으며, Map은 키와 값 유형의 데이터 형태로 제공된다.그리고, List는 인덱스 위치에 값을 순차적으로 저장하는데 사용된다. 그림으로 인터페이스와 구현 클래스 관계를 정리하자면 아래와 같다.먼저 Set 부터 알아보자. HashSet은 빠른 접근 속도를 가지는 반면에 중복 저장이 허용되지 않는다. 또한, 객체(데이터)를 인덱스로 관리하지 않기 때문에, 저장 순서를 보장하지 않는다.HashSet은 객체를 저장하기 전, hashCode() 를 호출하여 이미 저장되어 있는 객체들의 해시코드와 비교한다.만약 동일한 해시코드가 있다면 equals.. 2018. 5. 9.
JVM의 메모리 구조 JAVA 프로그램이 실행되면, JVM은 OS로부터 이 프로그램이 필요로 하는 메모리를 할당받고, JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. Compiler는 텍스트로 되어 있는 Source Code 를 Class File로 변환시켜 준다. Class Loader는 JVM 내의 클래스를 로드하고 Link를 통해 적절히 배치하는 일련의 작업을 수행하는 모듈로서, 런타임 시 동적으로 Class를 로드 한다.Execution Engine는 Class Loader를 통해 JVM 내의 Runtime Data Area에 배치된 바이트 코드는 Execution Engine에 의해 실행되며 Execution Engine은 JAVA 바이트 코드를 명령어 단위로 읽어서 실행한다.Runtime Data.. 2018. 5. 4.
Java Synchronized을 이용한 트랜잭션 예제 Java Synchronized(동기화)란 여러 개의 Thread가 한 개의 자원을 사용하고자 할 때, 해당 Thread만 제외하고 나머지는 접근을 못하도록 막는 것이다.이를 응용해서, 은행 ATM 의 Transaction 예를 만들어보자. 시나리오1. User01이 ATM에서 돈을 인출하려 함.2. User02가 User01이 인출하고 있는 도중에, 돈을 인출할 수 없어야 함.3. User01의 인출이 끝날때 까지 기다려야 함.* 인출의 행위는 Thread간 상호 배타적으로 동작해야 함. package com.augustine.threadtest3; import java.util.concurrent.atomic.AtomicInteger; class SyncThreadTest { public static.. 2018. 4. 26.
Thread 예제 Runnable Interface를 이용한 Thread 만들기 Thread와 Runnable 의 관계는 일꾼과 작업 사이의 관계와 같다.따라서, Thread가 시작되었을 때, 그 Thread에서 할 작업을 줘야 한다. package com.augustine.threadtest1; class ThreadTest01 { public static void main(String args[]) { Runnable r = new Runnable1(); Thread t1 = new Thread(r); // 생성자 Thread(Runnable target) t1.start(); } } class Runnable1 implements Runnable { @Override public void run() { //threa.. 2018. 4. 25.
반응형