목록Programming/JAVA (5)
공부기록
ITEM 2 : 생성자에 매개변수가 많다면 빌더를 고려하라 객체의 생성자 패턴에는 먼저 점층적 생성자 패턴, 자바빈즈 패턴이 있었다. 먼저 점층적 생성자 패턴이다. 생성자를 필수 매개변수를 받는 생성자부터 시작해서 선택 매개변수 1개 ... N개 까지 생성자를 늘려가는 식이다. class Example1{ private final int a; private final int b; private final int c; public Example(int a){ this(a,0,0); } public Example(int a, int b){ this(a,b,0); } public Example(int a, int b, int c){ this.a = a; this.b = b; this.c = c; } } 이 패..
ITEM 1. 생성자 대신 정적 팩터리 메서드를 고려하라 정적 팩터리메서드는 그 클래스의 인스턴스를 반환하는 정적 메서드이다. 다음은 Boolean클래스에서 발췌한 간단한 예시이다. 이 메서드는 기본 타입인 boolean 값을 받아 Boolean 객체 참조로 반환한다. public static void valueOf(boolean b){ return b? Boolean.TURE : Boolean.FALSE; } 이런 방식에는 장점 5가지가 있다. 이름을 가질 수 있다. 생성자는 반환될 객체의 특징을 설명할 수 없지만, 정적 팩터리 메서드는 반환될 객체의 특징을 설명할 수 있다. 호출될 때 마다. 인스턴스를 새로 생성하지는 않아도 된다. 위의 예시와 같이 인스턴스를 미리 만들어 재사용할 수 있다. 반환 타..
쓰레드의 동기화 쓰레드간의 상호배제를 지키기 위해, 임계영역에 하나의 쓰레드만 들어오도록 락을 걸 수 있다. 이 처럼 한 스레드가 진행 중인 작업을 다른 쓰레드가 간섭하지 못하도록 막는 것을 '스레드의 동기화 (synchronization)' 이라고 한다. synchronized를 이용한 동기화 synchronized 키워드를 이용한 동기화에는 두 가지 방식이 있다. 메서드 전체를 임계영역으로 지정 public synchronized void calcSum(){ /* 모두 임계 영역이 된다.*/ } 이 경우, 해당 메서드가 포함된 객체의 lock을 얻어 작업을 수행하다가 메서드가 종료되면 lock을 반환한다. 특정한 영역을 임계영역으로 지정 synchronized(refObj){ /* 모두..
프로세스의 구현과 실행 public class ThreadEx1 { public static void main(String[] args){ ThreadEx1_1 t1 = new ThreadEx1_1(); Runnable r = new ThreadEx1_2(); Thread t2 = new Thread(r); t1.start(); t2.start(); } } class ThreadEx1_1 extends Thread{ public void run(){ for(int i=0; i
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cMG4M7/btq53Qx28yF/9ggwoQfk8FBVkE4jAVWRxk/img.png)
JVM? Java Virtual Machine (이하 JVM)은 추상적인 컴퓨팅 머신이다. JVM은 Java 컴파일러에 의해 생성된 바이트코드를 기계어로 바꾸어주는 역할을 한다. JVM은 java로 작성된 프로그램에게 그들을 실행시키기 위한 프로그램으로 보여지게 된다. 때문에, java 프로그램들은 동일한 인터페이스와 라이브러리를 가지고 작성될 수 있게 된다. JVM은 특정한 OS에 호환되도록 만들어져서, Java 프로그램을 해당 OS에서 돌아가도록 만든다. 이러한 식으로 Java 프로그램은 플랫폼 독립성을 띄게 된다. 다만 JVM 자체는 플랫폼 종속적인 특성을 띈다. 자바 실행 과정 작성된 자바 코드는 Java Compiler 에 의해 바이트코드로 변환된다. Class Loader는 이 변환된 바이트코..