TIL💡/Java(8)
-
Spring 학습 자료 링크
카카오 면접을 앞두고 아무래도 부족한 스프링 개념을 학습하기 위해 급하게 서치를 했다. 그런데 그동안 이해가 어려웠던 내용을 깔끔하게 정리해둔 사이트를 발견했다! https://melonicedlatte.com/2021/07/11/174700.html 스프링(Spring), 스프링 부트(Spring Boot)란? 개념 정리 - Easy is Perfect melonicedlatte.com
2022.11.14 -
[Java] String, StringBuffer, StringBuilder
분류 String StringBuffer StringBuilder 변경 Immutable Mutable Mutable 동기화 Thread-safe Synchronized 가능(Thread-Safe) Synchronized 불가능 저장 Heap & Stack에서 참조 Buffer → toString() 시에 메모리 할당 1. String 특징 new 연산을 통해 생성된 인스턴스의 메모리 공간은 변하지 않음 (Immutable) Garbage Collector로 제거되어야 함 문자열 연산 시 새로 객체를 만드는 Overhead 발생 객체가 불변하므로, Multihead에서 동기화를 신경 쓸 필요가 없다. → 문자열 연산이 적고, 조회가 많은 멀티 쓰레드 환경에 좋음 → 문자열 추가,수정,삭제 등의 연산이 빈..
2022.10.22 -
[Java] 스레드 이해
Java에서 Thread를 구현하는 방법은 크게 두 가지가 있다. 1. Thread class 상속 → 다른 클래스 상속이 불가하니 2번 선호 2. Runnable 인터페이스 구현 public class ThreadBasic { public static void main(String[] args) { // 1. Thread Class를 상속받는 방법 Thread t1 = new MyThread1(); // 쓰레드의 생성 t1.start(); // 쓰레드의 실행. run()이 종료되면 MyThread1 소멸된다. // 2. Runnable 인터페이스를 구현하는 방법 Thread t2 = new Thread(new MyThread2()); t2.start(); // 쓰레드의 실행. run()이 종료되면 My..
2022.10.21 -
[Java] 스레드 생명 주기 상태
생성 상태(NEW) 생성(NEW)되었지만 시작되지 않은 스레드이다. 각 스레드에 start 메서드가 호출되기 전까지의 상태이다. 실행 대기 상태(RUNNABLE) 각 스레드에 start 메서드를 호출하면 스레드가 생성 상태에서 실행 대기(RUNNABLE) 상태로 전환된다. 실행 대기 상태에서의 스레드는 실행 중이거나 실행할 준비가 된 상태이다. JVM 스레드 스케줄러가 실행에 필요한 리소스와 시간을 할당하기를 기다리는 스레드는 실행할 준비가 되었지만, 아직 실행되지는 않는다. CPU가 사용할 수 있게 되면 스레드 스케줄러가 스레드를 실행한다. Runnable runnable1 = () => {} Thread t1 = new Thread(runnable1); t1.start(); 블록 상태(BLOCKED)..
2022.10.21 -
[Java] 자바 동시성(멀티스레딩)의 개요
프로세스와 스레드 프로세스: 프로그램 또는 애플리케이션의 실행 인스턴스 스레드: 프로세스의 실행 가능한 가장 작은 (CPU) 작업 단위 자바 스레드는 오버헤드가 상대적으로 낮고 다른 스레드와 공통 메모리 공간을 공유한다. 동시성과 병렬성 동시성은 하나의 애플리케이션에서 여러 작업을 관리하는 능력을 의미한다. 프로그램이나 애플리케이션은 한 번에 하나의 작업을 처리(순차 처리)하거나 동시에 여러 작업을 처리(병행 처리)할 수 있다. 동시성을 병렬성(Parallelism)과 혼동하면 안된다. 병렬성은 애플리케이션이 서로 다른 개별 작업을 동시에 처리하는 능력이다. 💡 동시성은 많은 일을 한 번에 관리하는 것을 의미하고, 병렬성은 많은 일을 동시에 실행하는 것을 의미한다. 동시성은 멀티 스레딩으로 구현할 수 있..
2022.10.21 -
스프링 컨테이너(Container)와 스프링 빈(Bean)
ApplicationContext를 스프링 컨테이너라 한다. 기존에는 개발자가 AppConfig를 사용해서 직접 객체를 생성하고 DI를 했지만, 이제부터는 스프링 컨테이너를 통해서 사용한다. 스프링 컨테이너는 @Configuration이 붙은 AppConfig를 설정(구성)정보로 사용한다. 여기서 Bean이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 한다. 스프링 빈은 @Bean이 붙은 메서드의 명을 스프링 빈의 이름으로 사용한다.(ex. memberService, orderService) 빈 이름을 직접 부여할 수도 있다. 하지만 빈 이름은 고유해야 한다. 같은 이름을 부여하면 다른 빈이 무시되거나 설정이 덮어버리므로 ..
2022.06.16