Java Concurrency in Practice阅读笔记
Introduction
A (very) brief history of concurrency
- 最早的计算机都是串行的,一个指令接着一个指令的执行下去,但是为了提高效率,进程和线程出现了
- 同一个进程里面的线程共享同样的内存和堆栈,由于它们都能访问相同的变量,如果没有做好同步的话,就会出现一些不可预计的结果。
Java 8允许我们在接口中定义non-abstract method,这在Java 8之前是不被允许的。定义的方法是使用default关键词:
1 | interface Formula { |
我们可以使用deault关键词定义的方法:
1 | Formula formula = new Formula() { |
这里我们使用了匿名内部类。匿名内部类的一个很大的好处就是:接口是不能实例化的,如果要实例化,我们需要先定义实现这个接口的类。但很多时候,我们其实是不关心实现接口的类是怎样的,而只关心接口的方法是如何重写(override)的。匿名内部类就可以帮助我们达到目的。
http://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html
Cherry pick 简单来说就是把另一个分支的某个commit直接放到当前的分支,如果在merge的时候遇到conflict,处理的方式与rebase类似