자바의 가상 스레드스레드의 종류(KLT vs ULT)크게 커널 수준 스레드와(Kernel-Level Threads) 사용자 수준 스레드(User-Level Threads)로 분리된다커널 수준 스레드 : 스래드의 생성, 스케줄링 및 관리를 OS 커널이 담당, OS에 의존적이며. 자원 관리 및 멀티프로레싱 환경에서의 스케줄링 측면 장점이 있지만, 스레드 생성과 컨텍스트 스위칭에 높은 오버헤드가 있을 수 있다사용자 수준 스레드 : 사용자 영역 라이브러리나 애플리케이션에 의해 관리되며 운영 체제 커널과는 독립적으로 스케줄링 된다. 스레드 관리 모든 작업을 사용자 영역에서 처리하며 스레드 생성 및 컨텍스트 스위칭이 빠르다. but 일부 리소스 공유 작업은 커널의 도움이 필요할 수 있으며, 자바 같은 경우 1:1 ..
람다람다란? 메서드로 전달할 수 있는 익명 함수를 단순화한 것으로. 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다람다 사용예시Comparator byWeight = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); }};Comparator byWeight = (Apple a1, Apple a2) (람다 파라미터) -> a1.getWeight().compareTo(a2.getWeight());..
예외처리(Exception)에러에는 컴파일 에러, 런타임 에러, 논리적 에러가 있다자바 프로그래밍에서는 실행 시 발생할 수 있는 오류에 에러(error)와 예외(exception) 이 있다에러는 메모리 부족(OutOfMemoryError)나 스택오버플로우(StackOverflowError)와 같은 일어나면 복구할 수 없는 심각한 오류인 반면 예외는 어느정도 대응 코드를 작성해서 개발자가 대처할 수 있는 수준이 가능하다JVM 은 프로그램을 실행하는 도중에 예외가 발생하면 해당 예외 클래스로 객체를 생성하고 예외 처리 코드에서 예외 객체를 이용할 수 있게 해준다자바의 오류 클래스 계층 구조[출처 : https://www3.ntu.edu.sg/home/ehchua/programming/java/J5a_Exce..
하나의 데이터 타입을 다른 타입으로 바꾸는 것을 타입 변환 혹은 형변환(캐스팅) 이라 한다 자바의 데이터형에는 크게 두가지로 나뉜다 기본형(primitive type) - Boolean Type(boolean) - Numeric Type(short, int, long, float, double, char) 참조형(reference type) - Class Type - Interface Type - Array Type - Enum Type - 그 외 다른 것들 서로 간에는 형변환이 가능한데, 기본적으로 자바는 대입 연산자로(=) 서로 양쪽의 타입이 일치하지 않으면 할당이 불가능하다 long d = 10.234; // ERROR long d = (long) 10.234; 그래서 이와 같이 (타입) 캐스팅 연..
인터페이스(Interface) 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것(자바의 다형성을 극대화해 개발 코드의 수정을 줄이고, 유지보수성을 높이기 위해 인터페이스 사용) // 상수 public interface 인터페이스명 { // 타입 상수명 = 값; // 인터페이스에서 값 정해주니 바꾸지 말고 제공해주는 값만 사용할 것(절대적) } // 추상 메소드 // 가이드만 줄테니 추상메소드를 오버라이딩해서 재구현(강제적 implements 안하면 사용안해도 됨) 타입 메소드명(매개변수, ... ); // 디폴트 메소드 default 타입 메소드명(매개변수, ... ){ // 구현부 // 인터페이스에서 기본적으로 제공해주지만, 마음에 안들시 각자 구현해서 사용(선택적) } //정적 메소드 stati..
오버 로딩(Overloading) : 메서드의 이름은 같고 매개변수의 유형과 개수가 다르도록 하는 것 오버 라이딩(Overriding) : 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의 해서 사용하는 것 오버 라이딩 class Animal { void makeSound() { System.out.println("Some generic sound"); } } class Dog extends Animal { @Override void makeSound() { System.out.println("Woof"); } } public class Main { public static void main(String[] args) { Animal animal = new Animal(); animal.makeS..