- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java多线程讲义讲义
Java多线程编程1.线程的概念首先我们从以下几个方面来了解线程的概念。●进程和线程的区别●线程的概念模型●线程的运行状态●线程的优先级1.1 进程和线程的区别1.1.1 多个进程在大多数操作系统中都可以创建多个进程。当一个程序启动时,它可以为即将开始的每个任务创建一个进程,并允许他们同时运行。当一个程序因等待网络访问或用户输入而阻塞时,另一个程序还可以运行,这样就增加了资源利用率。但是,按照这种方式创建每一个进程都要付出一定代价:设置一个进程要占用相当一部分处理器时间和内存资源。而且,大多数操作系统不允许进程访问其他的内存空间。因此,进程间的通信非常不方便。并且也不会将它自己提供给简单的编程模型。如图10-1所示,Word、Excel、IE等每一个软件都可以独立启动,它们都代表一个独立的进程,而它们各自都有自己的内存空间,这些内存空间之间相互独立互不共享,各自也能够并行运行。1.1.2 多个线程线程也为轻型进程(LWP)。因为线程只能在单个进程的作用域内活动,所以创建线程比创建进程更廉价的多。这样,因为线程允许协作和数据交换,并且在计算资源方面非常廉价,所以线程比进程更可取。线程需要操作系统的支持,因此不是所有的机器都提供线程。java编程语言,作为一种相当新的语言,已将线程和语言本身合为一体,这样就对线程提供了强健的支持。如图10-2所示,线程1,线程2到线程n,它们都代表一个独立的线程,运行在一个进程中,因此它们拥有同一块内存区域,可以共享内存中的数据。它们可以并行执行,但实际上在CPU的调用上是各自分割时间片的,并且是顺序执行的,如图中的粗线条所示。1.2线程的概念模型线程是彼此相互独立的、能独立运行的子任务,并且每一个线程都有自己的调用栈。所谓的多任务是通过周期性地将CPU时间片切换到不同的子任务,虽然在微观上看来,单合CPU只能运行一个子任务,但从宏观上来看,每个子任务似乎是同时连续运行的。我们现在使用的大多数操作系统都属于多任务、分时操行系统。正是由于这种操作系统的出现才有了多线程这个概念,我们使用的windows、linux都属于此列。 分时什么是分时操作系统呢?通俗点讲,就是可以同一时间执行多个程序的操作系统,在自己的电脑上面,你是不是一边听歌,一边聊天还可以一边看网页?实际上,并不是CPU在同时执行这些程序,CPU只是将时间切割为时间片,然后将时间片分配给这些程序,获得时间片的程序开始执行,不等执行完毕,下个程序又获得时间片开始执行,这样多个程序轮流执行一段时间,由于现在CPU的高速计算能力,给人的感觉就好像是多个程序在同时执行一样。一般可以在同一时间内执行多个程序的操作系统都有进程的概念。一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块内存空间、一组系统资源。在进程概率中,每一个进程内部数据和状态都是完全独立的。因此可见创建一个进程并执行他的开销是很大的,所以线程出现了。在Java中,程序通过流控制来执行程序流,程序中单个顺序的流控制称为线程,多线程则指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务。多线性意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。线程与进程相似,是完成某个特定功能的一段代码,是程序中单个顺序的流控制;但与进程不同的是,同类的多个线程是共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小的多,正因如此,线程也被称为轻负荷进程(light-weight process)。一个进程中可以包含多个线程。 多任务多任务是指在一个系统中可以同时运行多个程序,即有多个独立运行的任务,每个任务对应一个进程,同进程一样,一个线程也有从创建、运行到消亡的过程,称为线程的生命周期。用线程的状态(state)表明线程处在生命周期的那个阶段。线程有创建、可运行、运行中、阻塞、死亡5中状态。通过线程的控制与调度可使线程在这个几种状态间转化每个程序至少自动拥有一个线程,称为主线程。当程序加载到内存时,启动主线程。1.3线程的运行状态在java中,多线程就是一个类或一个程序执行或管理多个线程执行任务的能力,每一个线程可以独立于其他线程而独立运行,当然也可以和其他线程协同运行,一个类控制着它的所有线程,可以决定那个线程得到优先级,哪个线程可以访问其他类的资源,哪个线程开始执行,哪个保持休眠状态。根据线程的调度过程,线程可以处以不同的执行状态,如图10-3所示,是线程的运行机制图。线程的状态表示线程正在进行的活动及在此时间段内所能完成的任务。线程有创建、可运行、运行中、阻塞、死亡5种状态。一个具有生命的线程,总是处于这5种状态之一。●新建状态:使用new运算符创
文档评论(0)