면접 팁
기능&개념 설명을 할 때 책 사전적 의미를 설명 후 내가 이 기능을 가지고 어떤 걸 만들었고 결과적으로 내가 생각하거나 느낀 점을 설명 하기!!
<함수형 언어>
Immutable Class는 변경이 불가능한 클래스이며, 가변적이지 않는 클래스입니다
Immutable Class는 레퍼런스 타입의 객체이기 때문에 heap영역에 생성 됩니다.
자바에서 이런 Immutable Class로 어떤 것들이 있을까요?
대표적으로 String, Boolean, Integer, Float, Long 등등이 있습니다. 이러한 Immutable Class들은 heap영역에서 변경 불가능한 것이지 재할당을 못하는 것은 아닙니다. 즉 String a = "aa"; 에서 a = "bb"로 재할당이 가능합니다. a가 참조하고 있는 heap영역의 객체가 바뀌는 것이지 heap영역에 있는 값이 바뀌는 것이 아닙니다.
Thread 만드는 방법
- extends Thread → 객체 하나당 스레드 하나일 때 사용
- implements Runnable →객체 하나에 여러 개의 스레드일 때 사용
- new Thread(()-> { }). start(); - 익명 클래스
extends Thread 예제 코드
public class Loop1 extends Thread{
//루프를 run 으로 빼준다
//람다식 Thread 가 아닌 클래스 Thread 를 하려면 Override 를 해줘야한다
//Thread 는 최종적으로 run 을 실행함
@Override
public void run() {
execute();
}
public void execute(){
for (int i = 0; i <1000 ; i++) {
System.out.println(Thread.currentThread().getName()+": " +i+":::::"+Loop1.this);
}
}
}
public class OneToOne {
public static void main(String[] args) {
Loop1[] arr = {new Loop1(),new Loop1(),new Loop1(),new Loop1()};
for (int i = 0; i <arr.length ; i++) {
arr[i].start();
}
System.out.println("=================================");
}
}
레이스 컨디션
두 개 이상의 프로세스 혹은 스레드가 공유 자원을 서로 사용하려고 경합(Race)하는 현상을 말합니다
<Start 하면 CPU를 차지하기 위해 덤벼든다>
<for 루프가 도는 중에 여유가 있기 때문에 다른 스레드들이 경쟁적으로 참여하는 상황>
Thread 하나당 객체도 하나씩 묶여있는 구조 <extends Thread>
코드 실행 결과
Thread 0이 진행될 때 여유시간에 Thread 1 , Thread 2 , Thread 3 이 끼어들고 있습니다
이 코드의 장점 : Thread 하나에 객체 하나이기에 따로따로 원하는 작업을 진행할 수 있다
단점: Thread를 만드는 것도 무거운 작업인데 객체까지 같이 만들어지니 엄청나게 무거워진다 그래서 엔터프라이즈급 작업 시에는 금방 서버가 죽는다 그래서 웹을 만들 때는 <extends Thread → 객체 하나당 스레드 하나일 때 사용> 보다는 <implements Runnable →객체 하나에 여러 개의 스레드일 때 사용 >를 사용한다
오늘 강의는 Thread를 좀 더 심도 있게 이해하는 강의였습니다 Thread의 이해도는 Web와 DB를 이해하는데 큰 도움이 되는 부분이라 조금 강조하시면서 수업하셨던 것 같습니다
'개발자 성장 일지' 카테고리의 다른 글
2022.03.27 주말 공부 <크롤링 , Lombok 오류> (0) | 2022.03.27 |
---|---|
2022.03.24 ⭐DB 그리고 객체지향의 문제점 (0) | 2022.03.25 |
2022.03.23 채팅 IO (0) | 2022.03.23 |
2022.03.23 IO를 활용한 파일 보내기 (0) | 2022.03.23 |
2022.03.21 다양한 예외 처리 (0) | 2022.03.21 |