본문 바로가기

TIL139

23.05.27 wait()과 notify() 예시 더보기 package sparta_nbc.Syntax.thread.waitingnotify; import java.util.ArrayList; import java.util.List; public class Main { public static String[] itemList = { "MacBook", "IPhone", "AirPods", "iMac", "Mac mini" }; public static AppleStore appleStore = new AppleStore(); public static final int MAX_ITEM = 5; public static void main(String[] args) { // 가게 점원 Runnable StoreClerk =.. 2023. 5. 27.
23.05.26 프로세스 vs 쓰레드 프로세스 - 운영체제로부터 작업을 할당받는 단위 (ex. 카카오톡, 크롬 창, injellij 같은 '실행 중인 프로그램') 쓰레드 - 프로세스가 할당받은 자원을 이용하는 실행의 단위 (프로세스에서 일하는 일꾼? 개념) 프로세스의 구조 운영체제(OS)가 프로그램 실행을 위해 프로세스 안에 Code, Data, 메모리 영역(Stack, Heap)과 함께 할당 Code는 Java main 메서드와 같은 코드를 말한다 Data는 전역변수, 정적변수, 배열 등 초기화 된 데이터를 저장할 수 있는 저장공간 Memory(메모리 영역) Stack : 지역변수와 매개변수의 리턴 값을 저장하는 공간 Heap : 프로그램이 동적으로 필요한 변수를 저장하는 공간 (ex. new ~~()) 쓰레드의 구조.. 2023. 5. 26.
23.05.25 예외 발생시 어떻게 대응할지, 어떻게 사전에 예외처리를 할지 1. 예외를 어떻게 정의하는지 // 예외 클래스를 만들어서 예외를 정의 public class BadException extends Exception { // Exception은 java 기본 제공 클래스 public BadException() { super("위험한 행동을 하면 예외처리를 꼭 해야함"); // 출력할 에러 메시지 } } 2. 예외가 발생할 수 있음을 알리기 public class UsingClass { private final boolean just = true; // throws : 던지다 (=예외를 발생시키다) public void thisMethodIsDangerous () throws BadException { // t.. 2023. 5. 25.
23.05.24 문제 발생 Tire kiaSampleTire = new KiaTire("KIA"); Car car1 = new Car(kiaSampleTire); car1.tire.rideComfort(); // KIA 타이어 승차감은 60 위에서 이해한 내용대로라면 kiaSampleTire도 KiaTire을 통해 생성했더라도 자동 형변환에 의해 Tire로 변환되었을 텐데 KiaTire kiaSampleTire = new KiaTire("KIA")로 생성 했을 때와 같은 결과가 나온다. 제대로 이해하지 못했다는 증거. 1. kiaSampleTire가 KiaTire의 객체로 생성되었고, KiaTire가 rideComfort를 오버라이딩 했기에 실행되는건가?? 2. KiaTire와 Tire에 있는 super, this로 인.. 2023. 5. 24.