ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA - 5
    study/java 2020. 7. 20. 23:56

    Thread

    구현하는 방법

    1. Thread 객체를 상속받아 사용하는 방법

     

    2. Runnable 인터페이스를 구현하여 사용하는 방법

     

    wait() vs sleep()

    wait()은 다른 Thread에서 notify()나 notifyAll()로 깨워야지 일어나고 sleep()은 지정한 시간만큼 중지한다.

     

    run() vs start()

    run()을 호출하는 것은 생성된 스레드를 실행시키는 것이 아니라 단순히 클래스에 속한 메소드를 호출하는 것이고 start()는 새로운 스레드가 작업을 시작하는데 필요한 호출 스택(공간)을 생성한 다음에 run() 을 호출해서 생성된 호출 스택에 run()이 첫 번째로 저장하게끔 한다.

     

    Process vs Thread

    메모리를 할당받아 실행되고 있는 프로그램을 Process라고 하고, 각 Process는 여러 Thread를 통해 작업을 처리한다.

     

     

    String 관련

    String str = "A" vs String str = new String("A");

    전자의 경우 Heap 영역 내에 String constant pool에 저장되어 있다면 그 객체를 가리키게 하고 없다면 새롭게 저장하여 저장된 주소를 가리키게 한다.

    후자는 Heap 영역에 새로운 객체를 만들어 저장한 후 가리키게 한다.

     

    String vs StringBuilder / StringBuffer

    String : 연산할 때마다 새로운 객체 생성 ( String pool에 없다면 )

    StringBuilder / StringBuffer : 버퍼를 늘렸다 줄이며 연산

     

    StringBuilder vs StringBuffer

    StringBuffer는 Synchronized Keyword가 메소드별로 존재해서 스레드 간에 동기화 작업을 해주고 StringBuilder는 그렇지 않음. 

    즉 멀티 스레드면 Buffer, 싱글 스레드면 Builder

     

     

    Annotation

    본래 주석이라는 뜻으로 인터페이스를 기반으로 한 문법이다.

    주석과는 다른 역할을 하지만 주석처럼 코드에 달아 클래스에 특별한 의미를 부여하거나 기능을 주입할 수 있다.

    - built-in annotation : JDL에 내장된 어노테이션. @Override가 대표적

    - Meta annotation : 어노테이션에 대한 정보를 나타내기 위한 어노테이션

    - Custom annotation : 개발자가 직접 만들어내는 어노테이션

     

     

    Java Serialization

    객체의 상태 혹은 데이터 구조를 기록할 수 있는 포맷으로 변환

    ex ) 자바 객체를 Json으로 변환 또는 반대 작업을 수행하는 자바 라이브러리

     

    값에 의한 호출 vs 레퍼런스에 의한 호출

    Call by value : 값을 복사해서 새로운 함수로 넘기는 호출 방식. 원본값이 변경되지 않음

    Call by reference : 주소 값을 인자로 전달하는 호출 방식. 원본값이 변경됨.

     

    Java Reflection

    자바의 모든 클래스에는 클래스의 이름, 클래스 변수, 메소드, 메소드의 파라미터 등 다양한 클래스의 정보들을 담는 Class 타입의 오브젝트를 가지고 있다.

    해당 정보들을 컴파일할 때가 아닌 런타임 시점에서 불러와 사용하는 프로그래밍 기법을 말한다.

    스프링에서 DI와 IoC가 가능한 이유는 바로 이 Java Reflection 때문이다.

    클래스의 모든 구조를 볼 수 있는 강력한 도구인 만큼 무분별하게 사용할 시 코드가 복잡해질 수 있으며 에러가 발생하기 쉽다.

    또한 일반적인 메소드 호출 보다 getClass() 함수 호출이 더욱 느려 프로젝트 성능이 낮아질 수 있다.

     

    Java vs JavaScript

    Java는 객체지향 프로그래밍 언어로 시스템 개발, 안드로이드용 어플리케이션 개발에 사용되고 JavaScript는 사용자와 웹 사이트가 상호작용하는데 도움을 주는 스크립트 언어이다.

    'study > java' 카테고리의 다른 글

    [JAVA] static 키워드  (0) 2020.07.30
    [JAVA] Try-with-resources  (0) 2020.07.30
    JAVA - 4 ( 객체지향 )  (0) 2020.07.16
    JAVA - 3  (0) 2020.07.16
    JAVA - 2 (변수타입과 컬렉션)  (0) 2020.07.15
Designed by Tistory.