반응형

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 암호화 기능 제공

반응형
반응형
반응형

문제

현재 Mac pro1에 vscode에서 javac를 통해 컴파일하고 나서 실행할려고 했는데 컴파일에서 cannot find symbol error가 발생했습니다. 원인은 package 때문에 발생했습니다.

 

해결

package를 제거해주거나 위치 설정을 잡아 줍니다.

반응형

'Java' 카테고리의 다른 글

Java 7 functions  (0) 2023.06.18
JDK, JRE, JVM이란?  (0) 2023.06.15
[ERROR]Illegal modifier for the interface field Observer.name; only public, static & final are permitted  (0) 2023.05.29
AOP이란?  (0) 2023.05.11
반응형
반응형

interface 생성 중 객체 생성 할 때 private으로 설정을 해서 Illegal modifier for the interface field Observer.name; only public, static & final are permitted 에러가 발생했습니다.

 

발생 원인은 interface는 외부로 공개되는 메소드를 정의하는 것인데 private 객체를 선언 했기 때문입니다.

error를 해결하는 방법은 private을 public, static & final 수정해주면 됩니다.

반응형

'Java' 카테고리의 다른 글

Java 7 functions  (0) 2023.06.18
JDK, JRE, JVM이란?  (0) 2023.06.15
[ERROR]cannot find symbol  (0) 2023.05.29
AOP이란?  (0) 2023.05.11

+ Recent posts