본문 바로가기
728x90

👨‍🏫Study/JAVA59

[JAVA] 12 - 1 스레드(프로세스와 스레드, 멀티 스레드, 동시성과 병렬성, 스케줄링, 스레드 이름, 동기화 메소드, 임계 영역, 스레드의 상태) 12.1. 프로세스와 스레드의 개념 실행중인 하나의 프로그램(애플리케이션)을 프로세스라고 한다. 하나의 애플리케이션이 다중 프로세스를 만들 수도 있다. 운영체제는 CPU및 메모리 자원을 프로세스마다 할당해주고 병렬로 실행시킨다. 이를 멀티 프로세싱이라고 한다. 스레드는 프로세스 내부의 코드 실행 흐름이다. 하나의 프로세스가 2개 이상의 작업을 처리하는 데에 필요한 것이 멀티 스레드이다. 2개 이상의 코드 실행 흐름을 이용해 프로세스가 병렬적으로 다양한 작업을 처리하게 만들 수 있다. 스레드(Thread)는 사전적 의미로 한 가닥의 실이란 뜻이다. 12.2. 멀티 프로세스와 멀티 스레드의 오류 처리 12.2.1. 멀티 프로세스 멀티 프로세스는 각 프로세스가 독립적이기 때문에 하나의 프로세스에 오류가 발생해.. 2022. 3. 21.
[JAVA] 11 - 1 기본 API 클래스(Object, Objects) API란? Application Programming Interface의 약자이다. 컴포넌트들을 결합하기 위한 매개체 인터페이스이다. 호출을 위한 수단이다. 내부 구현을 볼 수 없는 경우도 많지만, 자바 내부의 표준 API들은 내부 구현을 볼 수 있다. API들은 경로 \jre\lib\rt.jar라는 압축 파일에 저장되어 있다. 자바 API 도큐먼트에서 API의 내용을 확인할 수 있다. API 클래스의 필드, 생성자, 메소드 등을 확인할 수 있다. java.lang 패키지 자바 프로그램의 기본적인 클래스를 담고 있는 패키지로 import 없이 사용할 수 있다. java.lang 대표 내장 클래스 Object 자바 클래스의 최상위 클래스로 사용 System 표준 입력 장치(키보드)로부터 데이터를 입력받을 .. 2022. 3. 21.
[JAVA] 10 - 2 예외 처리 컴파일시 일반 예외 vs 실행 예외 차이점 - 일반 예외가 발생할 가능성이 있는 코드는 빨간줄로 컴파일 에러를 발생시켜 예외처리 코드의 필요성을 알려줌 - 이 때 빨간 줄에 커서를 대면 Unhandled exception (처리되지 않은 예외)라고 뜬다. - 실행 예외는 컴파일러가 그냥 넘겨버려서 컴파일에러는 뜨지않으므로 개발자가 경험을 토대로 예외 처리 코드를 작성해야한다. 예외 처리 코드 구조 try { 예외 발생 가능성이 있는 코드 작성 } catch(예외클래스 e) { - 예외가 발생하지 않은 경우 : catch 블록은 실행되지 않음 - 예외가 발생한 경우 : 즉시 실행을 멈추고 catch 블록의 예외 처리 코드 실행한 후 finally 블록 실행 } finally { - 생략 가능한 구역 - 예.. 2022. 3. 21.
[JAVA] 10 - 1 예외 클래스 에러(error)와 예외(exception)의 차이 - 에러(error) : 응용프로그램 실행 오류가 발생하는것 - 예외(exception) : 개발자의 잘못된 코딩으로 인해 발생되는 프로그램 자체 오류 ( 컴파일 오류가 아니라 빨간 줄도 안나오는데 실제로 실행해보면 Exception~라고 뜨면서 프로그램이 종료되는 현상) - 공통점 : 에러든 예외든 한 번 발생이 되면 프로그램이 곧바로 종료됨 - 차이점 : 예외는 예외처리라는 것을 통해 프로그램이 종료되지 않고 정상 작동할 수 있도록 유지해준다. - 예외처리 : 코드를 보면 아무 이상이 없어 보이지만 실제로 실행해보면 논리적인 오류가 있음을 사용자가 인지하도록 오류를 명시해주는 행위 대표적인 예외 발생 예시 - 분모가 0일때 나눗셈 발생되는 오류의 종.. 2022. 3. 21.
[JAVA] 09 - 2 익명 객체 익명 객체란 ? - 말 그대로 이름이 없는 객체이다. - 보통 우리는 클래스를 생성하고 여러 곳에서 그 클래스를 가지고 객체를 만든다. - new 연산자를 통해 클래스이름으로 생성자를 호출하는 방법을 사용한다. - 여기서 우리는 여러 곳에서 사용하지 않고 오로지 특정 위치에서만 사용하고 싶을 때가 있다. - 그 한 번의 사용을 위해 굳이 클래스를 만들어 사용하는 것은 귀찮은 일이다. - 이럴 때 우리는 익명 객체를 사용하여 클래스를 명시적으로 선언하지 않고 바로 객체를 생성할 수 있다. - 인터페이스를 구현할 때도 익명 객체 생성 가능 일반적인(명시적으로 선언) 객체 생성 방법과 익명 자식 객체 생성 방법의 차이점 - 명시적인으로 객체 생성 방법 class Parent {} // 부모 클래스 생성 cla.. 2022. 3. 21.
[JAVA] 09 - 1 중첩 클래스와 중첩 인터페이스 소개 중첩 클래스 - 클래스 내부에 선언하는 클래스를 말함 - 중첩 클래스를 통해 두 클래스 멤버들이 서로 쉽게 접근할 수 있음 - 클래스 안에 클래스를 정리할 수 있어서 정리가 되어 코드의 복잡성을 줄일 수 있음 - 클래스 내부에 인터페이스를 선언하면 그것은 중첩 인터페이스임 (해당 클래스의 구현 클래스를 만들기 위해 선언) 중첩 클래스의 종류 - 멤버 클래스 : 클래스의 멤버로서 선언됨 -> 클래스나 객체가 사용 중일 때는 언제든 재사용 가능 멤버 클래스 안에서는 인스턴스 멤버 클래스(static이 붙지 않음)와 정적 멤버 클래스(static이 붙음)로 나뉜다. - 로컬 클래스 : 생성자나 메소드 내부에 선언됨 -> 해당 메소드를 실행할 때만 사용 가능 - 정적 멤버 클래스 : 상위 객체가 인스터스화되지 .. 2022. 3. 21.
[JAVA] 08 - 2 타입 변환과 다형성 인터페이스의 다형성 - 다형성을 구현하기 위해 필요한 2가지 : 메소드 재정의와 타입 변환 - 상속과 마찬가지로 인터페이스에서도 이 두 가지 기능이 제공됨 - 상속과 차이점 : 상속은 같은 종류의 하위 클래스 생성, 인터페이스는 사용 방법이 동일한 클래스를 만드는 기술 - 인터페이스의 다형성이 필요한 이유 : 소스 코드의 변함 없이 구현 객체를 빠르고 쉽게 교체하기 위해서이다 - 이를 통해 구현 객체를 쉽게 교체하여 실행 결과가 다양해져 인터페이스의 다형성을 이루게 됨 - 구현 객체 교체 예시 interface I { // 인터페이스 생성 void method1(); void method2(); } // I i = new A(); // 이 코드를 아래 코드로 수정함 I i = new B(); i.meth.. 2022. 3. 21.
[JAVA] 08 - 1 인터페이스 인터페이스란 ? - 기능 사용을 위한 규약 - 객체의 사용 방법을 정의한 타입 - 다양한 객체를 동일한 방법으로 이용할 수 있게 해줌 - 개발 코드에서 인터페이스의 메소드를 호출하면 이제 인터페이스가 객체의 메소드를 호출시킴 - 개발 코드를 수정하지 않고 객체를 변경할 수 있게 하여 개발 코드 측면에서 실행 내용과 리턴 값을 다양화할 수 있다. 인터페이스 선언 1. 특징 - 클래스와 규칙이 동일함 (대문자로 시작) - 상수 필드와 추상 메소드만을 멤버로 가진다. ( 객체를 생성할 수 없기 때문에 생성자는 가질 수 없음) - 인터페이스는 객체 사용 방법만 정의한 것이므로 인스턴스나 정적 필드를 선언할 수 없다. (상수 필드는 고정된 값이므로 선언이 가능) - 최종 실행은 객체에서 실행되므로 인터페이스에서 .. 2022. 3. 21.
[JAVA] 07 - 3 추상 클래스 추상 클래스의 의미 - 실체들의 공통되는 특성을 가지고 있는 클래스를 의미하며 규격(기준) 클래스라고도 부른다. - 실체 클래스(자식)와 추상클래스(부모)는 상속의 관계를 가지고 있음 - 실체 클래스는 추상 클래스의 모든 특성(필드, 메소드)을 물려받고 추가로 다른 특성을 가질 수 있음 - Dog 클래스와 Cat 클래스에서 공통으로 사용된 필드나 메소드를 따로 Animal 클래스에다가 만들 수 있음 추상 클래스를 사용하는 목적 2가지 1. 시간 절약 - 집전화기와 스마트폰 모두 사용자라는 데이터와 전원이라는 기능이 필요한데 이를 각각에 만들어주면 일이 2배로 늘어나게된다. - 따라서 전화 라는 추상 클래스를 만들어 거기에 사용자와 전원을 만들어주면 그걸 불러쓰면 되기 때문에 일이 수월해진다. 2. 이름 .. 2022. 3. 21.
728x90