Knowledge Wiki/Java (51) 썸네일형 리스트형 JAVA 함수형 인터페이스, function 패키지 1. 함수와 메서드의 차이 근본적으로 동일. 함수는 일반적 용어, 메서드는 객체지향개념 용어 함수는 클래스에 독립적, 메서드는 클래스에 종속적 2. 함수형 인터페이스 단 하나의 추상 메서드만 선언된 인터페이스 @FunctionalInterface 어노테이션을 붙이면 컴파일러가 문법 체크해줌. 쓰면 좋음. 추상 메서드를 선언할 때 'public abstract'는 생략 가능하다. 인터페이스 함수의 기본이 'public abstract' 니까. 3. 함수형인터페이스 타입의 매개변수는 람다식을 전달하면 된다는 뜻이다. // 선언 void aMethod(MyFunction f){ f.myMethod(); } // 호출 aMethod(()-> System.out.println("myMethod()")); 4. 함.. JAVA 람다식 6. 람다식(Lambda Expression) 함수를 간단한 '식(Expression)'으로 표현하는 방법 블록 안에 문장이 하나뿐일 때 괄호생략 가능하고 끝에 세미콜론(;) 붙이지 않는다 람다식은 익명 함수가 아니라 익명 객체이다..!! 익명 객체이기 때문에 함수형인터페이스 타입 변수로 다뤄야 한다. MyFunctino2 f = (a, b) -> a > b ? a : b; JAVA 쓰레드 동기화 1. 임계영역 : 한 번에 한 개의 쓰레드만 접근 가능한 영역 synchronized로 임계영역을 설정하는 방법 2가지 public synchronized void calcSum(){ // Do Something } synchronized(참조변수){ // Do Something } 2. wait()과 notify() 동기화의 효율을 높이기 위해 사용 Object 클래스에 정의되어 있으며 동기화 블록 내에서만 사용 가능하다. wait(): 객체의 lock을 풀고 쓰레드를 해당 객체의 waiting pool에 넣는다 notify(): waiting pool에서 대기중인 쓰레드 중의 하나를 깨운다. notifyAll(): waiting pool에서 대기중인 모든 쓰레드를 깨운다. Customer 쪽에서는 자.. JAVA 쓰레드 1. 쓰레드의 구현과 실행 1) Thread 클래스를 상속 2) Runnable 인터페이스를 구현 2. JAVA는 쓰레드의 우선순위를 1~10으로 구분한다 JVM에서 정한 게 1~10 실제 OS인 Windows는 32 단계 JVM에서 정한 우선 순위는 희망 사항이어서 반드시 이 순위가 지켜지진 않음. JVM이 OS는 아니기 때문에. 3. 데몬 쓰레드(daemon thread) 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행 일반 쓰레드가 모두 종료되면 자동적으로 종료된다. 반대로 말하면 일반 쓰레드는 자동적으로 종료되지 않음. ex) 가비지 컬렉터(GC), 자동저장, 화면 자동갱신 등 4. 데몬 쓰레드는 보통 무한루프로 구현 프로그램이 언제 종료될지 모르니까. 5. 쓰레드 sleep() 예외 처리를 해야.. JAVA Runtime 에러를 줄이기 위한 노력 1. Runtime 에러를 줄이기 위한 초기화 노력 String str = null; // X String str = ""; // O Object[] objArr = null; // X Object[] objArr = new Object[0]; // O Object[] objArr = { }; // O JAVA 제네릭 1. 제네릭 Runtime 에러를 컴파일 에러 수준에서 catch하려는 노력. 제네릭을 쓰면 타입 체크가 강화됨 객체의 타입 안정성을 높이고 형 변환의 번거로움을 줄여줌. 형변환 잘못할 시 ClassCastException()이 발생하는 데 이 예외를 컴파일 단계에서 차단할 수 있음. ArrayList list = new ArrayList(); // JDK 1.5 이전, 제네릭 도입 이전 ArrayList list = new ArrayList(); // JDK 1.5 이후 2. 제한된 제네릭 클래스 extends 키워드로 대입할 수 있는 타입을 제한 class FruitBox{ ArrayList list = new ArrayList(); } FruitBox appleBox = new FruitBox();.. JAVA 해싱(Hashing) 1. 해싱(Hashing) 해시 함수로 해시 테이블에 데이터를 저장 & 검색 해시 테이블은 배열과 링크드 리스트가 조합된 형태 JAVA Collections 패키지 1. Collections 패키지는 여러 static 메소드를 제공해준다. synchronizedXXX(); // 동기화 되지 않은 컬렉션 -> 동기화된 컬렉션 unmodifiableXXX(); // 변경 가능한 컬렉션 -> 변경불가능한 컬렉션 singletonXXX(); // 객체 1개만 저장 checkedXXX(); // 한 종류이 객체만 저장 List syncList = Collections.synchronizedList(new ArrayList(...)); // 동기화 되지 않은 List -> 동기화된 List unmodifiableList = Collections.unmodifiableList(new ArrayList(...)); // 변경 가능한 List -> 변경불가능한 List 2. Col.. 이전 1 2 3 4 5 ··· 7 다음