架构师(一) JAVA

Posted by YaPi on July 1, 2020

JVM

在 Java8 中,永久代已经被移除,被一个称为“元数据区”(元空间)的区域所取代。元空间 的本质和永久代类似,元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用 本地内存。因此,默认情况下,元空间的大小仅受本地内存限制。类的元数据放入 native memory, 字符串池和类的静态变量放入 java 堆中,这样可以加载多少类的元数据就不再由 MaxPermSize 控制, 而由系统的实际可用空间来控制。

JAVA8

等待某一任务执行

原始方法使用 CountDownLatch 等待多任务执行

CountDownLatch countDownLatch = new CountDownLatch(6);
...
// 完成一个
countDownLatch.countDown();
// 等待
countDownLatch.await();

使用java8提供的异步处理方法 // 处理一系列文件 List filePaths = Arrays.asList(...) // 异步处理所有文件 List<CompletableFuture> fileFutures = filePaths.stream() .map(filePath -> doSomeThing(filePath)) .collect(Collectors.toList());

// 将他们合并起来 CompletableFuture allFutures = CompletableFuture.allOf( fileFutures.toArray(new CompletableFuture[fileFutures.size()]) );

// doSomeThing CompletableFuture task1 = CompletableFuture.supplyAsync(()->{ //自定义业务操作 .... });