更新时间:2021-05-21 16:33:22 来源:极悦 浏览668次
世间万物都可以同时完成很多工作。例如,人体可以同时进行呼吸、血液循环、思考问题等活动。用户既可以使用计算机听歌,也可以编写文档和发送邮件,而这些活动的完成可以同时进行。这种同时执行多个操作的“思想”在Java中被称为并发,而将并发完成的每一件事称为线程。
在Java中,并发机制非常重要,但并不是所有程序语言都支持线程。在以往的程序中,多以一个任务完成以后再进行下一个任务的模式进行,这样下一个任务的开始必须等待前一个任务的结束。Java语言提供了并发机制,允许开发人员在程序中执行多个线程,每个线程完成一个功能,并与其他线程并发执行。这种机制被称为多线程。
多线程是非常复杂的机制,比如同时阅读3本书。首先阅读第1本第1章,然后再阅读第2本第1章,再阅读第3本第1章,接着回过头阅读第1本第2章,以此类推,就体现了多线程的复杂性。
既然多线程这么复杂,那么它在操作系统中是怎样工作的呢?其实,Java中的多线程在每个操作系统中的运行方式也存在差异,在此以Windows操作系统为例介绍其运行模式。
Windows系统是多任务操作系统,它以进程为单位。一个进程是一个包含有自身地址的程序,每个独立执行的程序都称为进程,也就是正在执行的程序。图1所示为Windows 7系统下使用任务管理器查看进程的结果。
图1查看Windows 7的进程
系统可以分配给每个进程一段有限的执行CPU的时间(也称为CPU时间片),CPU在这段时间中执行某个进程,然后下一个时间段又跳到另一个进程中去执行。由于CPU切换的速度非常快,给使用者的感受就是这些任务似乎在同时运行,所以使用多线程技术后,可以在同一时间内运行更多不同种类的任务。
图2的左图是单线程环境下任务1和任务2的执行模式。任务1和任务2是两个完全独立、互不相关的任务,任务1是在等待远程服务器返回数据,以便进行后期的处理,这时CPU一直处于等待状态,一直在“空运行”。如果任务2是在5秒之后被运行,虽然执行任务2用的时间非常短,仅仅是1秒,但必须在任务1运行结束后才可以运行任务2。由于运行在单任务环境中,所以任务2有非常长的等待时间,系统运行效率大幅降低。
单任务的特点就是排队执行,也就是同步,就像在cmd中输入一条命令后,必须等待这条命令执行完才可以执行下一条命令一样。这就是单任务环境的缺点,即CPU利用率大幅降低。
图2单线程和多线程执行模式
图2的右侧则是多线程环境下的执行模式。从中可以发现,CPU完全可以在任务1和任务2之间来回切换,使任务2不必等到5秒再运行,系统的运行效率大大得到提升。这就是要使用多线程技术、要学习多线程的原因。
那么什么是线程呢?线程可以理解成是在进程中独立运行的子任务。比如,QQ.exe运行时就有很多的子任务在同时运行。像好友视频、下载文件、传输数据、发送表情等,这些不同的任务或者说功能都可以同时运行,其中每一项任务完全可以理解成是“线程”在工作,传文件、听音乐、发送图片表情等功能都有对应的线程在后台默默地运行。
以上就是极悦小编介绍的"Java线程概念是什么?",希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为您服务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习