首页 理论教育 Java线程概念简介

Java线程概念简介

时间:2023-10-18 理论教育 版权反馈
【摘要】:在Java中,并发机制非常重要,但并不是所有程序语言都支持线程。多线程是非常复杂的机制,如同时阅读3本书。其实,Java中的多线程在每个操作系统中的运行方式也存在差异,在此以Windows操作系统为例介绍其运行模式。这就是要使用多线程技术、要学习多线程的原因。线程可以理解成是在进程中独立运行的子任务。

Java线程概念简介

世间万物都可以同时完成很多工作。例如,人体可以同时进行呼吸、血液循环、思考问题等活动。用户既可以使用计算机听歌,也可以编写文档和发送邮件,而这些活动的完成可以同时进行。这种同时执行多个操作的“思想”在Java中被称为并发,而将并发完成的每一件事称为线程

在Java中,并发机制非常重要,但并不是所有程序语言都支持线程。在以往的程序中,多以一个任务完成以后再进行下一个任务的模式进行,这样下一个任务的开始必须等待前一个任务的结束。Java语言提供了并发机制,允许开发人员在程序中执行多个线程,每个线程完成一个功能,并与其他线程并发执行。这种机制被称为多线程

多线程是非常复杂的机制,如同时阅读3本书。首先阅读第1本第1章,然后阅读第2本第1章,再阅读第3本第1章,接着回过头阅读第1本第2章,依此类推,就体现了多线程的复杂性。

既然多线程这么复杂,那么它在操作系统中是怎样工作的呢?其实,Java中的多线程在每个操作系统中的运行方式也存在差异,在此以Windows操作系统为例介绍其运行模式。

Windows系统是多任务操作系统,它以进程为单位。一个进程是一个包含有自身地址的程序,每个独立执行的程序都称为进程,也就是正在执行的程序。图8-1所示为Windows7系统下使用任务管理器查看进程的结果。

系统可以分配给每个进程一段有限的执行CPU 的时间(也称为CPU 时间片),CPU 在这段时间中执行某个进程,然后下一个时间段又跳到另一个进程中去执行。由于CPU 切换的速度非常快,给使用者的感受就是这些任务似乎在同时运行,所以使用多线程技术后,可以在同一时间内运行更多不同种类的任务。

图8-1 查看Windows 10 的进程(www.xing528.com)

图8-2的左图是单线程环境下任务1和任务2的执行模式。任务1和任务2是两个完全独立、互不相关的任务,任务1 是在等待远程服务器返回数据,以便进行后期的处理,这时CPU 一直处于等待状态,一直在“空运行”。如果任务2是在5秒之后被运行,虽然执行任务2用的时间非常短,仅仅是1秒,但必须在任务1运行结束后才可以运行任务2。由于运行在单任务环境中,所以任务2有非常长的等待时间,系统运行效率大幅降低。

单任务的特点就是排队执行,也就是同步,就像在cmd中输入一条命令后,必须等待这条命令执行完才可以执行下一条命令一样。这就是单任务环境的缺点,即CPU 利用率大幅降低。

图8-2 单线程和多线程执行模式

图8-2的右侧则是多线程环境下的执行模式。从中可以发现,CPU 完全可以在任务1和任务2之间来回切换,使任务2不必等到5秒再运行,系统的运行效率大大提升。这就是要使用多线程技术、要学习多线程的原因。

那么什么是线程呢?线程可以理解成是在进程中独立运行的子任务。比如,QQ.exe运行时就有很多的子任务在同时运行。又如视频、下载文件、传输数据、发送表情等,这些不同的任务或者说功能都可以同时运行,其中每一项任务完全可以理解成是“线程”在工作,传文件、听音乐、发送图片表情等功能都有对应的线程在后台默默地运行。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈