Java version 7 functions
Functions
1. try-with-resources
try (InputStream in = new FileInputStream(inFile); // try에 자원 객체를 전달하면 finally 블록으로 종료 처리를 하지 않아도 try 코드 블록이 끝나면 자동으로 자원을 종료해주는 기능.
OutputStream out = new FileOutputStream(outFile)) {
...
} catch(IOException ex) {
...
}
2. multicatch
try (InputStream in = new FileInputStream(inFile); // try에 자원 객체를 전달하면 finally 블록으로 종료 처리를 하지 않아도 try 코드 블록이 끝나면 자동으로 자원을 종료해주는 기능.
OutputStream out = new FileOutputStream(outFile)) {
...
} catch(IOException ex) {
...
}
3. switch-case에 문자열 지원
String str = "비밀";
switch(str) {
case "진실": ...
break;
case "비밀": ...
break;
...
default: ...
break;
}
4. Fork/Join
- 어떤 계산 작업을 할 때 여러 개로 나누어 계산한 후 결과를 모으는 작업합니다.
- 별도로 구현하지 않아도 라이브러리에서 Work Stealing 작업을 알아서 수행합니다.
// 기본
long total = 0;
for(int loop = from; loop <= to; loop++) {
total += loop;
}
// Fork/Join
public class ForkJoinSample {
static final ForkJoinPool mainPool = new ForkJoinPool();
public static void main(String[] args) {
long from = 0;
long to = 10;
GetSum sum = new GetSum(from, to);
// 계산을 수행하는 객체를 넘겨주어 작업을 실행하고 결과를 받음
Long result = mainPool.invoke(sum);
System.out.println("total:" + result);
}
}
public clas GetSum extends RecursiveTask<Long> {
long from, to;
public GetSum(long from, long to) {
this.from = from;
this.to = to;
}
public Long compute() {
long gap = to - from;
// 작업 단위가 작을 경우
if(gap <= 3) {
long result = 0;
for(int loop = from; loop <= to; loop++) {
result += loop;
}
return result;
}
// 작업 단위가 클 경우
// 두 개의 작업으로 나누어 동시에 실행시키고, 두 작업이 끝날 때 까지 결과를 기다림
long middle = (from + to) / 2;
GetSum prev = new GetSum(from, middle);
prev.fork();
GetSum post = new GetSum(middle + 1, to);
// compute() 함수는 람다식을 통해서 기존의 값에 어떻게 연산을 할지 지정할 수 있습니다.
return post.compute() + prev.join();
}
}
5. ECC 암호화 기능 제공
'Java' 카테고리의 다른 글
JDK, JRE, JVM이란? (0) | 2023.06.15 |
---|---|
[ERROR]cannot find symbol (0) | 2023.05.29 |
[ERROR]Illegal modifier for the interface field Observer.name; only public, static & final are permitted (0) | 2023.05.29 |
AOP이란? (0) | 2023.05.11 |