Garbage Collection : Java Appliation에서 사용하지 않는 메모리를 자동으로 수거하는 기능. Java Appliation은 JVM(Java Virtual Machine)위에서 구동되는데, JVM의 기능 중 더이상 사용하지 않는 객체를 청소하여 메모리 공간을 확보하는 작업 (GC가 필요한 이유 : Heep 영역에 객체들이 계속 쌓이게 되면 OutOfMemoryException이 발생, 이를 방지하기 위해 주기적으로 사용하지 않는 객체를 수집하여 제거해줘함) - Garcage Collector : 메모리가 부족할 때 쓰레기를 정리해주는 작업(Garbage Collection)을 수행하는 프로그램 ㄴ 하는 일 : 메모리 할당, 사용중인 메모리 인식, 사용하지 않는 메모리 인식 - 자바..
Callable - Runnable과 유사하지만 작업의 결과를 받을 수 있다 (값을 return 할 수 있다) Future - 비동기적인 작업의 현재 상태를 조회하거나 결과를 가져올 수 있다 결과값 가져오기 get() import java.util.concurrent.*; public class App { public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); Callable hello = () -> { Thread.sleep(2000L); return "Hel..
Executors - 고수준 Concurrency 프로그래밍 - 그런 기능을 Executors에게 위임 - Executors가 스레드를 만들고 우리는 Runnalbe를 제공해주면 된다 (Runnalbe에 우리가 할 일만 정의하면 됨) Executors가 하는 일 - 스레드 만들기 : 어플리케이션이 사용할 스레드 풀을 만들어 관리한다 - 스레드 관리 : 스레드 생명 주기를 관리한다 - 작업 처리 및 실행 : 스레드로 실행할 작업을 제공할 수 있는 API를 제공한다 주요 인터페이스 - Executors: excute(Runnalble) 많이 안씀 - ExecutorsService : Executors를 상속받은 인테페이스로 Callalbe도 실행할 수 있으며, Executors를 종료시키거나 여러 Calla..
Concurrent 소프트웨어 - 동시에 여러 작업을 할 수 있는 소프트웨어 ex) 웹 브라우저로 유튜브 보며 키보드로 문서에 타이핑, 녹화를 하면서 코딩을 하고 적어둔 문서를 보거나 수정 자바에서 지원하는 Concurrent 프로그래밍 - 멀티프로세싱 - 멀티스레드 자바 멀티스레드 프로그래밍 - Thread / Runable Thread 만드는 방법 1. - 상속(매우 불편) public class App { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); System.out.println("Hello Thread" ); } static class MyThread extends Th..
Optional : 오직 값 한 개가 들어 있을수도, 없을 수도 있는 컨테이너 ex ) 자바 프로그래밍에서 NulllPointException을 보게 될 때가 있다 package java8study; import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; public class App3 { public static void main(String[] args) { List springClasses = new ArrayList(); spri..
OnlineClass.java package java8study; public class OnlineClass { private Integer id; private String title; private boolean closed; public OnlineClass(Integer id, String title, boolean closed) { this.id = id; this.title = title; this.closed = closed; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTit..
Stream sequence of elements supporting sequential and parallel aggregate operations 연속적이고 병렬적인 집계 연산을 지원하는 순서가 있는 요소 1. 쉽게말해 콜렉션이나 연속된 데이터를 처리하는 오퍼레이션 모음 2. 데이터를 담고 있는 저장소(컬렉션)이 아니다 3. 스트림이 처리하는 데이터 소스를 변경하지 않는다(Functionl in nature) ex) package java8study; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Spliterator; import java.util.stream.Collect..
1. Iterable의 기본 메소드 - forEach, spliterator package java8study; import java.util.ArrayList; import java.util.List; import java.util.Spliterator; public class App2 { public static void main(String[] args) { List myCuteBoys = new ArrayList(); myCuteBoys.add("JooYeon"); myCuteBoys.add("HyunJae"); myCuteBoys.add("MinGyu"); myCuteBoys.add("JeongHan"); myCuteBoys.add("JaeMin"); System.out.println("----..
함수형 인터페이스 - 추상 메소드를 딱 하나만 가지고 있는 인터페이스 - @FuncationInterface 애노테이션을 가지고 있는 인터페이스 람다 표현식 - 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있음 - 코드를 줄일 수 있음 - 메소드 매개변수, 리턴타입, 변수로 만들어 사용할수도 있음 package java8study; @FunctionalInterface public interface RunSomething { ///추상형 메소드가 하나만 있으면 함수형 인터페이스 void doIt(); // void doAgain(); //하나 더 만들면 에러 //인터페이스 안에서 static 메소드 정의가능 static void printName(){ System.out.println("Joo..
- Total
- Today
- Yesterday