为了账号安全,请及时绑定邮箱和手机立即绑定
  • 协议不同
    查看全部
  • 3-11 JDK11 其他新特性

    查看全部
  • 3-10 JDK11 中新增加的常用 API

    查看全部
  • import org.jetbrains.annotations.NotNull;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Map;
    
    public class LocalVarExample {
    
        /**
         * java8特性:lambda表达式语法
         */
        public static void lambdaInJava8() {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("before java8");
                }
            }).start();
    
            new Thread(()-> System.out.println("in java8")).start();
            List<String> list = Arrays.asList("java8","jdk8","1.8");
            list.forEach(w->{
                System.out.println("lambda in java8->"+w);
            });
        }
    
        /**
         *Java10 新特性:局部变量类型推断
         */
        private static void varInJava10(){
            int var =10;
            var i =10;
            var str = "java10";
            var list = new ArrayList<String>();
            var map = Map.of(1,"a",2,"b");
            for(var entry : map.entrySet()){
                System.out.println(entry);
            }
        }
    
        /**
         *Java11 新特性:允许var在声明隐式类型的lambda表达式的形式参数时使用
         */
        private static void lambdaWithVarInJava11 (){
           List<Integer> nums = Arrays.asList(9,11,23,3,7,2,8);
    //       nums.sort((s1,s2)->{
    //           if(s1.equals(s2)){
    //               return 0;
    //           }else{
    //               return s1 > s2 ? 1:-1;
    //           }
    //       });
           nums.sort((@NotNull var s1, @NotNull var s2)->{
               if (s1.equals(s2)) {
                   return 0;
               } else {
                   return s1 > s2 ? 1 : -1;
               }
           });
           nums.sort((s1,s2)-> s1 > s2 ? 1:-1);
           System.out.println(nums);
        }
    
        /**
         * Lambda参数的本地变量语法
         */
        public static void main(String[] args) {
    //        lambdaInJava8();
    //        varInJava10();
            lambdaWithVarInJava11();
        }
    }


    查看全部
  • import java.net.URI;
    import java.net.http.HttpClient;
    import java.net.http.HttpRequest;
    import java.net.http.HttpResponse;
    import java.util.concurrent.CompletableFuture;
    
    /**
     * 标准HTTP客户端
     */
    public class HttpClientExample {
        /**
         * 同步Get方法
         * @param uri
         * @throws Exception
         */
        private static void synGet(String uri) throws Exception {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder().uri(
                    URI.create(uri)).build();
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println(response.statusCode());
            System.out.println(response.body());
        }
    
        /**
         * 异步Get方法
         * @param uri
         * @throws Exception
         */
        private static void asyncGet(String uri) throws Exception {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder().uri(
                    URI.create(uri)).build();
            CompletableFuture<HttpResponse<String>> future = client.sendAsync(request,HttpResponse.BodyHandlers.ofString());
            future.whenComplete((resp,ex)->{
                if (ex!=null){
                    ex.printStackTrace();
                }else {
                    System.out.println(resp.statusCode());
                    System.out.println(resp.body());
                }
            }).join();
        }
    
        public static void main(String[] args) throws Exception {
            String uri = "http://t.weather.sojson.com/api/weather/city/101030100";
            //synGet(uri);
            asyncGet(uri);
        }
    }


    查看全部
  • import java.util.concurrent.TimeUnit;
    
    /**
     * 改进Aarch64函数
     */
    public class Aarch64Example {
        public static void mathOnJdk11() {
            long startTime = System.nanoTime();
            for (int i = 0; i < 100000000; i++) {
                Math.sin(i);
                Math.cos(i);
                Math.log(i);
            }
            long endTime = System.nanoTime();
            System.out.println(TimeUnit.NANOSECONDS.toMillis(endTime-startTime)+"ms");
        }
    
        public static void main(String[] args) {
            mathOnJdk11();
        }
    }


    查看全部
  • import java.lang.invoke.MethodHandle;
    import java.lang.invoke.MethodHandles;
    import java.lang.invoke.MethodType;
    
    /**
     * 动态语言API测试
     */
    public class DynamicTest {
        private static void test(){
            System.out.println("动态语言API测试");
        }
        public static void main(String[] args) throws Throwable {
            // public方法的Lookup
    //        MethodHandles.Lookup publicLookup = MethodHandles.publicLookup();
            // 所有方法的Lookup
            MethodHandles.Lookup lookup = MethodHandles.lookup();
            MethodHandle mh = lookup.findStatic(DynamicTest.class,"test", MethodType.methodType(void.class));
            mh.invokeExact();
        }
    }


    查看全部
  • 动态语言API测试

    查看全部
  • G1垃圾收集器会将堆内存分配为等大小的region默认情况下是2048个region

    查看全部
  • 对象内存分配过快,mixed gc来不及清理,导致old region被沾满会触发full gc,full gc是单线程执行

    查看全部
  • 老年代占用的内存大小超过堆内存的预值时会触发mixed gc,预值可以在启动的时候指定

    查看全部
  • G1垃圾收集器

    查看全部
  • 并发表及扫描垃圾回收器

    查看全部
  • 并行垃圾收集器

    查看全部
  • 串行垃圾收集器

    查看全部

举报

0/150
提交
取消
课程须知
本课程是对 JDK 新版本的特性进行解读,并不会介绍 Java 语言及语法特性。所以,在学习本课程之前,需要对 Java 语言有所了解。
老师告诉你能学到什么?
1. 多版本 JDK 的安装和配置 2. JDK11 核心新特性的介绍及代码演示 3. JDK12 核心新特性的介绍及代码演示

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!