cpu密集型:几核就设置几,可以保持cpu的效率最高
io密集型:设置大于判断你程序中十分耗io资源的线程
ForkJoin:分而治之和工作窃取算法
Future:异步回调:比如我i请求阻塞线程两秒,但是主线程输出1111不会被这两秒所阻塞
1、我需要一个计算时间5秒方法的返回值
2、我不想等这5秒钟,我想要继续执行下面的代码,那就异步执行这个方法
3、当我通过get去获取这个返回值时,如果已经过了5秒,也就是方法执行完了,那我就可以直接得到返回值
4、如果方法还没执行完,这个时候就需要等待执行完才能拿到返回值
JMM:内存交互参数有8种:
Volatile:1保证可见性 2不保证原子性 3防止指令重排
第二条怎么能保证原子性:方法1 使用lock或synchronized 方法2:使用原子类:比如把int 换成AtomicInteger
怎么样防止指令重排:加了volatile关键字的会在上下都加一层内存屏障:禁止上面和下面的指令进行交换
CAS:如果我期望的值达到了,那么就更新,否则就不更新,比较当前工作内存中的值和主内存中的值,如果这个值是期望的,那么就更新,如果不是就一直循环
CAS的三个问题:ABA问题:使用原子引用可以解决(类似乐观锁)
可重入锁:相当于外面有一把琐,里面也有一把锁,只有当外面的锁释放以后,里面的锁才能执行
自旋锁主要是一个cas的操作
标签:JUC,两秒,编程,原子,并发,内存,返回值,执行,方法 From: https://www.cnblogs.com/zhangtaibing/p/16902560.html