![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b5iwIg/btrnkxbyBjy/Bk3Tkgy2lh0JDnyOGKNPS0/img.png)
Executors - 고수준 Concurrency 프로그래밍 - 그런 기능을 Executors에게 위임 - Executors가 스레드를 만들고 우리는 Runnalbe를 제공해주면 된다 (Runnalbe에 우리가 할 일만 정의하면 됨) Executors가 하는 일 - 스레드 만들기 : 어플리케이션이 사용할 스레드 풀을 만들어 관리한다 - 스레드 관리 : 스레드 생명 주기를 관리한다 - 작업 처리 및 실행 : 스레드로 실행할 작업을 제공할 수 있는 API를 제공한다 주요 인터페이스 - Executors: excute(Runnalble) 많이 안씀 - ExecutorsService : Executors를 상속받은 인테페이스로 Callalbe도 실행할 수 있으며, Executors를 종료시키거나 여러 Calla..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/qeTKh/btrnlnSJALc/yEKokXg85vOjzsuQDpcGA1/img.png)
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..
나쁜 코드에 주석을 다지 마라. 새로 짜라 1. 주석은 나쁜 코드를 보완하지 못한다 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 자신이 저지른 난장판을 주석으로 설명하려 애쓰는 대신에 그 난장판을 깨끗이 치우는 데 시간을 보내라 2. 코드로 의도를 표현하라 //예제1. 직원에게 복지 혜택을 받을 자격이 있는지 검사 if((employee.flags & HOURLY_FLAG) && (EMPLOYEE.age>65)) //예제2. if(employee.isEligibleForFullBenefits()) 주석으로 달려는 설명을 함수로 만들어 표현해도 충분 3. 좋은 주석 - 법적인 주석(ex.저작권 정보, 소유권 정보...) - 정보를 제공하는..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/O9iJ1/btq9WquJwdn/kIS5mr6Dq6w0bSxTcuhQ4K/img.png)
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..
1. 작게 만들어라 책에 나온 예제 코드 보고 이해 2. 한 가지만 해라 함수는 한 가지를 해야 한다. 그 한가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈이다 3.함수 당 추상화 수준은 하나로 4. Switch문 책에 나온 예제 코드 보고 이해 5. 서술적인 이름을 사용하라 길고 서술적인 이름이 길고 서술적인 주석보다 좋다. 길고 서술적인 이름이 길고 서술적인 주석보다 좋다 6. 함수 인수 함수에서 이상적인 인수 개수는 0개 코드를 읽는 사람에게는 includeSetupPageInto(new PageContent) 보다 includeSetupPage()가 이해하기 쉽다. includeSetu..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/FtjP3/btq9dEihvDJ/QFgw8SWVT8913nxlDs2IQK/img.png)
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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/VSRoc/btq9e5GGfcb/ndTW5MtCLbu7mKKGs0VjEk/img.png)
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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/3NoPY/btq9fEuZqNq/FdIrEkAMemMkJzQ7Mo1R5k/img.png)
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("----..
1. 의도를 분명하게 밝혀라 잘못된 예 : int d; ->아무 의미도 드러나지 않다 int daysSinceCreation; int fileAgeInDays; 와 같이 분명한 정보 제공을 해줘야한다 2. 그릇된 정보를 피하라 여러 계정을 그룹으로 묶을 때, 실제 List가 아니라면 accountList라 명명하지않는다 계정을 담는 컨테이너가 실제 List가 아니라면 그릇된 정보를 제공하는 셈이다 그러므로 accountGroup, bunchOfAccounts 같은 이름으로 명명한다 -> 주의주의 3. 의미 있게 구분하라 ex) getActiveAccount(); getActiveAccounts(); getActiveAccountInfo(); 프로젝트에 참여한 사람은 셋 중 어느 함수를 호출할지 알 수 없..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bRW76B/btq8UOX3uHQ/5ljQjBKUk3SDyhIa7OXUeK/img.png)
함수형 인터페이스 - 추상 메소드를 딱 하나만 가지고 있는 인터페이스 - @FuncationInterface 애노테이션을 가지고 있는 인터페이스 람다 표현식 - 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있음 - 코드를 줄일 수 있음 - 메소드 매개변수, 리턴타입, 변수로 만들어 사용할수도 있음 package java8study; @FunctionalInterface public interface RunSomething { ///추상형 메소드가 하나만 있으면 함수형 인터페이스 void doIt(); // void doAgain(); //하나 더 만들면 에러 //인터페이스 안에서 static 메소드 정의가능 static void printName(){ System.out.println("Joo..
- Total
- Today
- Yesterday