Java线程的概念

    |     2015年4月13日   |   多线程编程   |     0 条评论   |    1524

和其他多数语言不同,Java 内置支持多线程。多线程程序包含两条或两条以上并发运行的部分,每一部分叫一个线程(thread),各有独立执行路径。多线程是多任务处理的一种特殊形式。

多任务处理几乎被所有现代操作系统支持,但分两种:基于进程的和基于线程的。把两者分清很重要。

一、进程与线程

进程(process)本质上是一个正在执行的程序。基于进程的多任务,允许计算机同时跑两个或更多程序——例如一边用文本编辑器,一边跑 Java 编译器。这时,程序是调度程序分派的最小代码单位。

基于线程的环境里,线程才是最小执行单位。一个程序可以同时做两件或多件事,例如编辑器一边打印一边格式化文本。多进程处理“大图”,多线程处理细节。

对比 进程 线程
重量 重量级,独立地址空间 轻量级,共享同一进程地址空间
通信 / 切换 昂贵、受限 便宜、成本低
谁控制 多进程不受 Java 控制 多线程受 Java 控制

二、为什么需要多线程

多线程能把 CPU 空闲压到最低。网络传输、本地磁盘、用户输入都远慢于 CPU。单线程必须等这些任务做完才能走下一步,尽管 CPU 大量闲着。多线程可以把这些空隙用起来,这对 Java 所处的交互式网络环境尤其重要。

若在 Windows 这类系统上写过程序,多线程并不陌生。Java 把大量细节收进语言和运行时,用起来更方便。

一句话总结:进程是重量级的整程序,线程是共享地址空间的轻量执行路径;Java 管线程不管进程,用线程填满网络和 IO 留下的 CPU 空隙。

转载请注明来源:Java线程的概念
本文链接地址:https://ai.zhousir.top/?p=205

上一篇:

下一篇:

回复 取消