<b>Java编程那些事儿93——多线程底子</b>[Java编程]
本文“<b>Java编程那些事儿93——多线程底子</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
第十二章 多线程
当计算机处于DOS时代时,程序几近是没有界面的,并且由于计算机运行速度等缘由,那个时代的计算机只能启动一个程序,只有当该程序退出今后才可以履行别的的程序.但是随着计算机性能的提高,以及软件的丰富,假如计算机还只能同时履行一个程序的话,那么计算机恐怕是很多人都不能承受的.
这种在任何一个时间点,可以有多个程序同时履行,大概有多个程序逻辑同时履行的本领,成为并发履行.
目前计算机早已进入到并发履行的时代,关于程序编程来说,举行并发履行的程序编写也就被称作并发编程,在Java语言中,同一个程序内部的并发处来由线程这个概念来实现.
12.1 多线程简介
从小时刻开始,老师就教诲大家——“一心不可二用”,这是指做一件事情的时刻一定要专注,不可以分心.但是在程序编程的范畴却早已经需求做到“一心二用”乃至“一心多用”了.下面来看一下线程的概念吧!
12.1.1 进程和线程
在介绍线程的概念从前,首先介绍一下进程的概念.
进程(Process)指操作系统中一个独立运行的程序.比方在计算机中,同时运行着QQ、Word、MSN等,那么QQ程序是一个进程,MSN程序也是一个进程.在Windows操作系统中的任务管理器中,便可以清楚的看到当前操作系统中正在运行的进程信息.
进程,也称任务,所以支持多个进程同时履行的操作系统就被称作多进程操作系统或多任务操作系统,目前主流的操作系统都属于这种范例.在操作系统中,每个进程拥有独立的内存空间等系统资源,进程和进程之间的系统资源不互用,所以进程之间的通信对比麻烦.通过在操作系统上同时运行多个进程,可以充分施展计算机的硬件本领,更便操纵户利用,也使得各种各样的程序大量呈现.
关于只有一个CPU的计算机来说,是若何实现同时履行多个进程的呢?其实CPU采取的原理就是分时履行,每个进程处于操作系统的进程行列中.然后每个进程顺次得到一个时间片进入CPU举行履行,在该时间片履行完成今后,该进程保存自身状况,退出CPU,然后别的的进程进入CPU持续履行.由于时间片的时间很短,比方Windows操作系统的时间片是20ms,所以在计算机用户看来程序就是同时履行的,而实际的履行方法是穿插顺次履行的.而关于多CPU的计算机来说,只是列队的行列增添了几个罢了,每个行列的实现方法和上面的介绍近似.
但是进程的概念相对对比大,并且需求成为一个独立的程序,这样关于编程来说对比麻烦,所以在程序开辟中计划了别的一个概念——线程.
线程(Thread)指同一个程序(进程)内部每个单独履行的流程.在前面的程序中每个程序内部都只包含一个系统流程,该流程从main办法开始,随着办法的调用进入到每个办法的内部,在办法调用完成今后返回到调用的位置,直到main办法完毕今后则该流程完毕,这个流程就是前面程序中的系统线程.Java语言关于线程的概念供应了杰出的支持,在编程中实际利用线程也显得比别的语言要简单一些.
而在实际实现时,Java语言支持在一个程序内部同时履行多个流程,此中每个单独的流程就是一个线程.比方在QQ程序中,系统的线程负责呼利用户的按键操作,在后台可以启动网络通讯的线程履行数据的发送和接纳,这样两个流程之间同时履行,并调和举行工作.而在服务器端程序中,每个和服务器举行通讯的客户端,在服务器端城市启动一个对应的线程举行通讯,这样每个客户端才显得同时和服务器端举行通讯.
在很多地方,线程被看做是一种“轻量级进程”,因为利用线程和进程的改变对比近似,并且利用线程时关于系统资源,如内存、CPU等,的占用要比进程小很多,也就是有更小的系统开销.别的,同一个程序中的线程之间变量是同享的,线程之间的数据交换要比进程之间的数据交换简单一些.
总之,无论是进程的概念还是线程的概念,都使编程从串行编程(顺次履行)进入到并行编程(同时履行)的范畴,而在CPU内部实现的原理都是按照时间片举行切换.
12.1.2 多线程上风
线程的概念增添了编程的难度,也增添了程序的复杂度,但是该概念还是在程序内部大量举行利用,这主要因为多线程程序的上风.
多线程程序主要的上风有两个:
1、 提高界面程序呼应速度
通过利用线程,可以将需求大量时间完成的流程在后台完成,比方目前常见的网络程序,在举行网络通讯时都需求利用单独的流程举行,也就是启动一个单独的线程举行,这样不会阻塞系统线程的履行,也就是不会阻塞关于界面的操作.别的,假如需求大量操作数据或举行数据变更的程序,也需求在后台启动单独的线程来提高前台界面的呼应速度.
通过将程序逻辑独立成一个单独的线程,使得掌握界面的系统线程和逻辑线程同时履行,避免了逻辑操作需求大量的时间阻塞系统的线程履行,从而大幅度提高界面程序的呼应速度.
以上是“<b>Java编程那些事儿93——多线程底子</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |