반응형

Back-End/Java 13

Java Dynamic Proxy

다이나믹 프록시란메소드 인터셉팅을 통해 부수적인 코드를 삽입할 수 있는 기술, Spring AOP에서도 사용한다.원래객체에 부수적인코드가 합쳐진 새로운 객체가 프록시 객체가 된다. 사용예)1. 먼저 Proxy로 사용할 클래스에 대한 인터페이스를 정의한다.1234567class interface Computer { public void boot(); public void prepareGUI(); }cs 2. 정의한 인터페이스를 구현123456789101112131415161718192021class ComputerImpl implements Computer { @Override public void boot() { System.out.println("현재 부팅이 진행중입니다..."); } @Override..

Back-End/Java 2018.09.17

자바의 인자 전달 방식은 Call by value다.

자바에서는 인자를 전달할 때 값을 전달한다. 예를들어 public void methodA(SomeClass param) { param = new SomeClass();} public static void main(String[] args) { SomeClass instance = new SomeClass(); methodA(instance);} 위와 같은 상황이 있다고 가정하고 결론부터 얘기하면 methodA를 실행한다고해서 main에 있는 instance에 새로운 SomeClass객체가 할당되지 않는다. methodA에 인자로 전달된 param은 분명 메인에 instance의 주소값을 가지고 있고, 그 주소값을 통해 instance객체에 대한 제어를 할 수 있는 것은 분명한 사실이다. 하지만 param..

Back-End/Java 2018.09.17

BlockingQueue 정리

멀티 스레드 환경에서 Queue는 생산 및 소비의 구조에 필수적인 자료구조이다.여기서 우리는 BlockingQueue라는 interface를 구현한 객체를 가져다 쓸 수 있다. Block 이라는 것은 먼저 무엇일까? '막는다'는 뜻이다.Queue가 꽉찼을때의 삽입 시도 / Queue가 비어있을때의 추출 시도를 막는 다는 것이다.이 자동으로 '막는' 기능이 있어 BlockingQueue 의 구현체는 모두 Thread-safe 하다. BlockingQueue의 종류 1) ArrayBlockingQueue배열로 구현된 큐로 생성시 최대 크기를 인자로 준다. 선택적으로 공평성 정책을 두어 block된 thread들의 순차적 대기열 생성대기열의 순서는 보장되지 않지만 공평성을 따지기 때문에 특정 thread의 기..

Back-End/Java 2018.09.17