ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 26 TIL
    내일배움캠프 2022. 12. 2. 19:56

     

    3일차 Java 심화 내용

     

     

     

    Test : ( Alt + Insert ) 매번 프로그램 돌릴 필요없이  테스트 코드로 테스트 가능

    • 개발 과정 중 예상치 못한 문제를 미리 발견할 수 있다.
    • 작성한 코드가 의도한 대로 작동하는지 검증할 수 있다.
    • 코드의 변경, 추가, 삭제 시 사이드 이펙트를 줄일 수있다.
      • → 마음편한 변경, 추가, 삭제 가능
      • → 마음편한 리팩터링 가능! “돌아가는 코드 건들지마라!!”

     

     

     

     

    Annotation

    • @Test : 테스트 메서드임을 나타냄. 실행 가능
    • @BeforeEach : 각 메서드 전에 실행됨을 나타냄
    • @BeforeAll : 현재 클래스의 모든 메서드보다 먼저 실행되어야하는 메서드 표시
    • @AfterAll : 현재 클래스의 모든 메서드보다 나중에 실행되어야하는 메서드 표시
    • @RepeatedTest : 메서드 반복 호출을 함을 표시
    • @DisplayName : 사용자 지정 표시 이름을 선언

    더 공부하기 : Good-unit-test

     

     

     

     

    Thread

    JVM 구조

    JVM Call Stack

    stack frame : 코딩의 시작, TCP School

     

    코딩교육 티씨피스쿨

    4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

    tcpschool.com

    main stack frame에서 일어나는 일 들 

    ...
    
            int main(void){
            func1();  // func1() 호출
    
            return 0;
            }
    
            void func1(){
            func2();  // func2() 호출
            }
    
            void func2(){
            }
            ...

     

     

     

     

     

    Thread와 Multi Thread 프로그래밍

    • Main Threadmain 스레드는 작업 스레드들을 만들어 병렬로 코드들을 실행.
    • 모든 자바 프로그램은 메인 스레드가 psvm을 실행하며 시작.
    • 프로세스의 종료
      • 싱글 쓰레드 : 메인 쓰레드가 종료하면 프로세스도 종료.
      • 멀티 쓰레드 : 실행 중인 쓰레드가 하나라도 있다면, 프로세스 미종료.
                               → 잘못된 처리로, 계속 돌고있는 쓰레드가 하나라도 있다면…? ☠️

     

     

    Thread Scheduling

    💻 컴퓨터가 동시에 처리할 수 있는 최대 작업 수는 CPU 코어(core) 수와 같다.

    → 스레드의 개수가 코어의 수보다 많을 경우, 스레드를 어떤 순서로 동시성을 실행할 것인가
         결정하는 스레드 스케줄링.

    • 자바의 스레드 스케줄링은 우선 순위(Priority) 방식과 순환 할당(Round-Robin) 방식 사용.
      기본 메커니즘은 Queue 구조를 가짐
      • 우선 순위 방식 : 우선 순위가 높은 스레드가 실행 상태를 더 많이 가지도록 스케줄링
                                 ( 1~10까지 값을 가질 수 있으며, 기본은 5 )
      • 순환 할당 방식 : 시간 할당량(Time Slice)을 정해서 하나의 스레드를 정해진 시간만큼 실행.

    개발자가 손수 Thread를 다루기엔 매우매우 어렵고 복잡도가 높다.
          Implementing thread using runnable interface (tutorialride.com)

     

     

     

    동기화(Synchronization) 문제

    스레드는 잘 다루면 매우 효율적이지만, 스레드 간섭 및 메모리 일관성 오류라는
    두 가지 오류가 발생할 수 있다. 이런 오류를 방지하는 데에 필요한 도구가 동기화.

     

    두 개 이상의 스레드가 동일한 리소스에 액세스하려고 시도하고
    Java 런타임이 하나 이상의 스레드를 느리게 실행하거나 심지어 실행을 일시 중단할 때
    발생하는 스레드 경합을 일으킬 수 있다.

     

     

    '내일배움캠프' 카테고리의 다른 글

    29 TIL  (0) 2022.12.07
    27 TIL  (0) 2022.12.05
    25 TIL  (0) 2022.12.01
    24 TIL  (0) 2022.11.30
    22 TIL  (0) 2022.11.28
Designed by Tistory.