关于纤程在JDK里面不直接支持,纤程有个名字叫协程,这个里面区分四个概念 程序,进程,线程,纤程,这是通俗易懂的概念。
关于纤程和线程的本质区别是一个通过内核空间,一个不通过内核空间
Linux操作系统分为两个不同的级别 ,一个是用户级,一个是系统级,JVM是跑在用户空间里的,他要进行系统调用的时候要通过内核空间来进行调用,这其中就包括了启动一个个线程,当启动一个线程的时候,需要内核调用,这个过程比较复杂,消耗资源比较多,正是因为这种并发比较重量级,就干脆把线程挪到用户空间去,一个个线程就是栈来回切换的记录。所以每一个纤程和每一个纤程对应的也是一个纤程栈,我自己执行的时候对应第一个栈数据,整个运行的时候运行到这里了可以让他暂停,运行到了下一个可以让下一个暂停,他们本质看上去也是CPU执行,他们之间切换的时候通过用户空间的,不通过系统空间,所以切换资源消耗低,切换也比较快。
到目前JDK13都没见官方支持纤程的影子,JAVA要想支持纤程,需要用开源第三方的纤程库。
启动一个纤程要占到1M没存,操作系统是支撑不了多少个纤程的。纤程的管理和执行现在在JDK不成熟,不直接支持,可以采用下面这个库。
<!-- https://mvnrepository.com/artifact/co.paralleluniverse/quasar-core -->
<dependency>
<groupId>co.paralleluniverse</groupId>
<artifactId>quasar-core</artifactId>
<version>0.8.0</version>
</dependency>
不过目前还没到1.0版本,了解就行。