内存栅栏
1 what
说白了是一些cpu或编译器的一些同步指令
2 why
cpu的cache快,而不去内存中取数据,在多线程并发中会读到cache的数据。
3 how
一般直接用关键字vilotitle
局部变量final
1 how
对运行期没有任何影响,变量的不变性只在编译器在编译期间得到保障。
2 why
生成的字节码完全一样
引用传递和值传递
基元类型传递的是值,引用类型传递的是引用的值。
如何在运行时判断对象的类型
if (obj instanceof C) {
//your code
}
或者
Object.getClass()
Java线程池的工作流程
(1)首先线程池判断基本线程池是否已满?没满,创建一个工作线程来执行任务。满了,则进入下个流程。
(2)其次线程池判断工作队列是否已满?没满,则将新提交的任务存储在工作队列里。满了,则进入下个流程。
(3)最后线程池判断整个线程池是否已满?没满,则创建一个新的工作线程来执行任务,满了,则交给饱和策略来处理这个任务。
按照不同的任务合理分配线程池