Stream流
特点
ForkJoin
分支合并框架
class MyTask extends RecursiveTask<Integer>{
private static final Integer ADJUST_VALUE = 10;
private int begin;
private int end;
private int result;
public MyTask(int begin, int end) {
this.begin = begin;
this.end = end;
}
@Override
protected Integer compute() {
if ((end-begin)<=ADJUST_VALUE){
for (int i = begin; i <=end ; i++) {
result = result+i;
}
}else {
int middle = (end+begin)/2;
MyTask task1 = new MyTask(begin,middle);
MyTask task2 = new MyTask(middle+1,end);
task1.fork();
task2.fork();
result = task1.join()+task2.join();
}
return result;
}
}
public class ForkJoinDemo {
public static void main(String[] args) throws ExecutionException, InterruptedException {
MyTask myTask = new MyTask(0,2000);
ForkJoinPool threadPool = new ForkJoinPool();
ForkJoinTask<Integer> forkJoinTask = threadPool.submit(myTask);
System.out.println(forkJoinTask.get());
threadPool.shutdown();
}
}
JVM
JVM体系结构
灰色的是线程私有的,黄色的是共享的(存在垃圾回收)
类加载器ClassLoader
JAVA自带的使用Bootstrap加载器
自己编写的类使用AppClassLoader加载器
双亲委派机制
我爸是李刚,有事找我爹
沙箱安全
防止自己写的代码污染JDK中的包
Native
native是一个关键字
含有native关键字的方法只有声明,没有实现,因为他是调用的C语言
PC寄存器
记录了方法之间的调用和执行情况,用来存储指向下一条指令的地址,也就是即将要执行的指令代码,他是当前线程所执行的字节码的行号显示器
方法区
栈
- 栈管运行,堆管存储
8种基础类型,实例方法,对象的引用变量存在栈中
堆 栈 方法区的交互关系
堆 heap
堆参数调优
堆参数调优
JDL1.7演示
JDK1.8演示
GC是什么
Minor GC和Full GC的区别
4大算法
1.引用计数法
2.复制算法
3.标记清楚
4.标记压缩
总结
面试题
JMM
3.标记清楚
4.标记压缩
总结
面试题