基本概念整理(二):线程、Java线程

2018-12-12  本文已影响0人  东方泯

线程

线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程。
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。

多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定,线程的运行中需要使用计算机的内存资源和CPU。

Java线程

线程有五个基本状态描述:

New: 新建线程(创建一个线程,但是没有任何可运行的实体)

Runnable 线程就绪(将程序变量实体放入线程中,)

Running 运行(运行放入的程序)

Blocked 阻塞(程序暂停,等待自动唤醒或者被动唤醒)

Dead 结束(程序运行结束或者异常退出)

https://blog.csdn.net/soulfeeling/article/details/72123887

https://www.cnblogs.com/nwnu-daizh/p/8036156.html

设计更复杂

虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。线程之间的交互往往非常复杂。不正确的线程同步产生的错误非常难以被发现,并且重现以修复。

上下文切换的开销(Context switch)

当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程。

上下文切换并不廉价。如果没有必要,应该减少上下文切换的发生。

上一篇 下一篇

猜你喜欢

热点阅读