Java教程

进程?线程?协程?

本文主要是介绍进程?线程?协程?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

进程和线程的关系?

线程是进程中的一个实体,线程本身是不会独立存在的。进程是操作系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。操作系统在分配资源时是把资源分配给进程的,但是CPU比较特殊,它是分配给线程的,因为真正要占用CPU运行的是线程,所以也说线程是CPU分配的基本单位。

在Java中,当我们启动main函数时其实就启动了一个JVM的进程,而main函数所在的线程就是这个进程中的一个线程,也称主线程。

进程和线程的关系图如下

 由图可知,一个进程中有多个线程,多个线程共享进程的堆和方法区资源,但是每个线程有自己的程序计数器和栈区域。

堆、方法区、程序计数器和栈的内容属于JVM 的内存布局(内存结构)的知识,可以查看我的另一篇博文——JVM--内存结构,谢谢。

协程?

协程就像非常轻量级的线程。线程切换或线程阻塞的开销都比较大。协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的,协程是由开发者控制的。所以协程也像用户态的线程,非常轻量级,一个线程中可以创建任意个协程。

 参考

《Java并发编程之美》翟陆续

这篇关于进程?线程?协程?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!