사용자 도구

사이트 도구


java:7

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:7 [2011/09/14 21:56]
kwon37xi
java:7 [2018/10/17 17:46] (현재)
kwon37xi [ThreadLocalRandom]
줄 155: 줄 155:
   * [[java:7:files|Java 7 Files]]에서 자세히 볼 수 있다.   * [[java:7:files|Java 7 Files]]에서 자세히 볼 수 있다.
  
 +===== MethodHandles =====
 +MethodHandle을 사용하면 메소드를 객체로 전달하는 것이 가능해진다. [[http://vanillajava.blogspot.com/2011/08/methodhandle-performance-in-java-7.html|Vanilla Java: MethodHandle performance in Java 7]]를 참조하였다.
 +
 +아래는 multiply 메소드를 MethodHandle 객체로 만든 뒤에 해당 메소드를 호출하는 것을 보여준다.
 +<code java>
 +import java.lang.invoke.MethodHandle;
 +import java.lang.invoke.MethodHandles;
 +import java.lang.invoke.MethodHandles.Lookup;
 +import java.lang.invoke.MethodType;
 +
 +public class Java7Test {
 +
 +    public static int multiply(int i, int j) {
 +        return i * j;
 +    }
 +
 +    public static void main(String[] args) throws Throwable {
 +        Lookup lookup = MethodHandles.lookup();
 +
 +        MethodHandle multiply = lookup.findStatic(Java7Test.class, "multiply", MethodType.methodType(int.class, int.class, int.class));
 +        
 +        System.out.println(multiply.invoke(5,6)); // multiply(5,6) 호출
 +        
 +        // 1번 인자로 4를 미리 지정해둔다.
 +        MethodHandle quadruple = MethodHandles.insertArguments(multiply, 1, 4);
 +        System.out.println(quadruple.invoke(5)); // multiply(4,5) 호출
 +    }
 +}
 +</code>
 +
 +===== ThreadLocalRandom =====
 +  * [[https://docs.oracle.com/javase/7/docs/api/java/util/Random.html|Random]]을 멀티쓰레드로 접근하면 ''synchronized'' 때문에 성능이 저하됨.
 +  * 쓰레드별로 Random 객체를 따로 생성하는 [[https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadLocalRandom.html|ThreadLocalRandom]]을 사용하면 된다.
 +<code java>
 +// 대부분 아래와 같은 형태로 사용하면 된다.
 +ThreadLocalRandom.current().nextX(...)
 +</code>
 +  * [[http://java-performance.info/java-util-random-java-util-concurrent-threadlocalrandom-multithreaded-environments/|java.util.Random and java.util.concurrent.ThreadLocalRandom in multithreaded environments  - Java Performance Tuning Guide]]
 ===== 기타 ===== ===== 기타 =====
   * 모든 Reflection 관련 예외들은 [[http://download.oracle.com/javase/7/docs/api/java/lang/ReflectiveOperationException.html|java.lang.ReflectiveOperationException]]를 상속하도록 되었다.   * 모든 Reflection 관련 예외들은 [[http://download.oracle.com/javase/7/docs/api/java/lang/ReflectiveOperationException.html|java.lang.ReflectiveOperationException]]를 상속하도록 되었다.
   * [[http://download.oracle.com/javase/7/docs/api/java/lang/Byte.html#compare%28byte,%20byte%29|Byte]], [[http://download.oracle.com/javase/7/docs/api/java/lang/Character.html#compare%28char,%20char%29|Character]], [[http://download.oracle.com/javase/7/docs/api/java/lang/Short.html#compare%28short,%20short%29|Short]], [[http://download.oracle.com/javase/7/docs/api/java/lang/Integer.html#compare%28int,%20int%29|Integer]], [[http://download.oracle.com/javase/7/docs/api/java/lang/Long.html#compare%28long,%20long%29|Long]] 에 static compare(x,y) 메소드가 추가되었다. 박싱 오버헤드 없이 원시값을 비교할 수 있게 되었다.   * [[http://download.oracle.com/javase/7/docs/api/java/lang/Byte.html#compare%28byte,%20byte%29|Byte]], [[http://download.oracle.com/javase/7/docs/api/java/lang/Character.html#compare%28char,%20char%29|Character]], [[http://download.oracle.com/javase/7/docs/api/java/lang/Short.html#compare%28short,%20short%29|Short]], [[http://download.oracle.com/javase/7/docs/api/java/lang/Integer.html#compare%28int,%20int%29|Integer]], [[http://download.oracle.com/javase/7/docs/api/java/lang/Long.html#compare%28long,%20long%29|Long]] 에 static compare(x,y) 메소드가 추가되었다. 박싱 오버헤드 없이 원시값을 비교할 수 있게 되었다.
 +  * [[http://java.dzone.com/articles/jdk-7-additions-currency-class|Java 7 Currency]]
 +  * [[http://weblogs.java.net/blog/fabriziogiudici/archive/2012/05/07/understanding-subtle-new-behaviours-jdk-7|Understanding subtle new behaviours of JDK 7]] - JDK 7과 AspectJ 구 버전을 사용할 경우 Bytecode Verifier에 문제가 발생할 수 있다. ''-XX:-UseSplitVerifier'' 옵션을 주면 일단 넘어갈 수 있다.
 +  * [[http://java.dzone.com/articles/java-7-how-write-really-fast|Java 7: How to write really fast Java code]]
 +  * [[http://java.dzone.com/articles/java-7s-support-suppressed|Java 7 Support for suppressed exceptions]]
 +  * [[http://java.dzone.com/articles/java-7-complete-invokedynamic|Java 7: A complete invokedynamic example]]
 +  * [[http://java.dzone.com/articles/garbage-collection-automatic|Garbage Collection with Automatic Resource Management in Java 7]]
  
 ===== 참조 ===== ===== 참조 =====
 +  * [[http://www.slideshare.net/boulderjug/55-things-in-java-7|55 New Features in Java 7]]
 +  * [[http://code.google.com/p/java7examples/|java7examples - Documentation and examples for new Java 7 features]]
   * [[http://java.dzone.com/articles/java-7-small-language-changes|Java 7 Small Language Changes Screencast | Javalobby]]   * [[http://java.dzone.com/articles/java-7-small-language-changes|Java 7 Small Language Changes Screencast | Javalobby]]
   * [[http://download.oracle.com/javase/7/docs/technotes/guides/language/enhancements.html#javase7|Java Programming Language Enhancements]]   * [[http://download.oracle.com/javase/7/docs/technotes/guides/language/enhancements.html#javase7|Java Programming Language Enhancements]]
   * [[http://blogs.oracle.com/darcy/entry/jdk_7_library_treats|JDK 7: Small Library Treats (Joseph D. Darcy's Oracle Weblog)]]   * [[http://blogs.oracle.com/darcy/entry/jdk_7_library_treats|JDK 7: Small Library Treats (Joseph D. Darcy's Oracle Weblog)]]
   * [[http://jaxenter.com/java-7-the-top-8-features-37156.html|Java 7: The Top 8 Features]]   * [[http://jaxenter.com/java-7-the-top-8-features-37156.html|Java 7: The Top 8 Features]]
 +  * [[http://www.hanb.co.kr/network/view.html?bi_id=1780|[한빛 네트워크] Java 7의 새로운 특징 : Java7에서의 중요한 변화들과 업데이트된 항목에 대한 조사.]] 
 +  * [[http://java.dzone.com/articles/java-7-understanding-phaser|Java 7: Understanding the Phaser]]
java/7.1316004968.txt.gz · 마지막으로 수정됨: 2011/09/14 21:56 저자 kwon37xi