文章目录
- [一. Kotlin](#一. Kotlin)
-
- [1. 协程是什么](#1. 协程是什么)
- [2. 泛型的Out和In关键字](#2. 泛型的Out和In关键字)
- [3. UnsafeVariance](#3. UnsafeVariance)
- [二. Java](#二. Java)
一. Kotlin
1. 协程是什么
官方回答:协程视为一种轻量级线程,可用于提高并发代码的性能
关键词:轻量级,并发
轻量级 :它不映射到本机线程,因此不需要在处理器上进行上下文切换,因此协程速度更快(线程由操作系统管理,协程由用户管理)
结构化并发 :Kotlin 协程支持结构化并发模型,通过 CoroutineScope 来管理协程的生命周期,确保所有协程在完成或取消时不会泄漏。
并发与并行的区别
一手画圆,一手画方,两只手同时操作,左右互搏,这个是并行;但是呢,我先左手画一笔,右手画一笔,同一时候只有一只手在操作,来回交替,直到完成图案,这个就是并发
支持以同步的方式编写异步代码
协程是更高效和更简单的方式管理并发的框架,其轻量级线程编写在实际线程框架之上,通过利用函数的协作性质来充分利用它
2. 泛型的Out和In关键字
- Out:协变------生产者
协变:只能读取不能写入
Out T等价于 ? extends T
案例1:支持协变的List - In:逆变------消费者
逆变:只能写入不能读取
In T等价于 ? super T
案例2:支持逆变的Comparator