Java程序设计线程要点解析.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
下面是一些常用线程类的方法。 (1)类方法 currentThread():返回正在运行的Thread对象。 yield():停止运行当前线程,将CPU控制权主动移交到下一个可运行线程。 sleep(int n):让当前线程睡眠n毫秒,n毫秒后,线程可以再次运行。 (2)实例(对象)方法 start():为本线程建立一个执行环境,然后调用本线程的run()方法。 run():在其中书写运行本线程的将要执行的代码,也是Runnable接口的唯一方法。当一个线程初始化后,由start() 方法来调用它,一旦run()方法返回,本线程也就终止了。 stop():让某线程马上终止,系统将删除本线程的执行 环境。 suspend():将线程挂起,暂停运行,但系统不破坏线程的执行环境,可以用resume()来恢复本线程的执行。 resume():恢复被挂起的线程进入可运行状态。 setPriority(int p):给线程设置优先级1=p=10。getPriority():返回线程的优先级。 setName(String name):赋予线程一个名字name。getName():取得由setName()方法设置的线程名字的字符串。 wait(long timeout):停止当前线程,直到另外的线程对这个对象使用notify()或notifyAll()方法。notify()或notifyAll():唤醒指定对象的一个或所有线程。 线程的状态和生命周期 一个线程从创建、启动到终止期间的任何时刻,总是处于下面五个状态中的某个状态。 1.创建状态 用new运算符创建一个Thread类或子类的实例对象时,形成的新线程就进入创建状态,但此时还未对这个线程分配任何资源,没有真正执行它。 2.可运行状态 在创建线程后,若要执行它,系统要对这个线程进行登记,并为它分配系统资源,这些工作由start()启动方法来完成。线程启动后,将进入线程队列排队等待CPU时间片,成为可运行状态(或称为就绪状态)。此时线程已经具备了运行的条件,一旦它获得CPU等资源时,就可以脱离开创建它的主线程而独立运行。 3.运行状态 当可运行状态的线程被调度并获得CPU等资源时,便进入运行状态。 4.阻塞状态 由于人为或系统的原因,线程必须停止运行,以后还可以恢复运行的状态称为阻塞状态。发生以下几种情况之一后,线程进入阻塞状态。 (1)调用了该线程的sleep()休眠方法。 (2)该线程正在等待I/O操作完成。 (3)调用了wait()等待方法。 (4)调用了suspend()挂起方法。 5.终止状态 运行run()方法完成后或调用stop()或destroy()方法就进入线程的终止态(或称为死亡状态)。处于这种状态的线程不具有继续运行的能力。 线程的调度和优先级 处于可运行状态的线程进入线程队列排队等待CPU等资源时,同一时刻在队列中的线程可能有多个,它们完成各自任务的轻重缓急程度是不同的。为了体现上述差别,多线程系统会给每个线程自动分配一个线程的优先级。任务较重要或紧急的线程,分配较高的优先级,在可运行态的线程队列中就往前排;否则,就分配较低的优先级。优先级低的线程只能等到优先级高的线程执行完后才被执行。对于优先级相同的线程,则遵循队列的“先进先出”原则,即先到的线程先获得系统资源来运行。 在Java语言中,对一个新建的线程,系统会分配一个缺省的线程优先级:继承创建这个线程的主线程的优先级(一般为普通优先级)。 Thread类也提供了方法setPriority()来修改线程的优先级。该方法的参数一般可用Thread类的优先级静态常量: PRIORITY.NORM_PRIORITY 普通优先级(5) PRIORITY.MIN_PRIORITY 最低优先级(1) PRIORITY.MAX_PRIORITY 最高优先级(10) 当一个在可运行状态队列中排队的线程被分配到CPU等资源而进入运行状态后,这个线程就称为是被“调度”或被线程调度管理器选中了。线程调度管理器负责管理线程排队和CPU等资源在线程间的分配。 多线程的实现方法与控制 可以通过继承Thread类或实现Runnable接口这两种途径来构造自己的run()方法。 多线程的实现方法 1.继承Thread类 可通过继承Thread类并重写其中的run()方法来定义线程体以实现线程的具体行为,然后创建该子类的对象以创建线程。 在继承Thread类的子类ThreadSubclassName中重写run()方法来定义线程体的一般格式为: public class ThreadSubclassName extends Thread{ public ThreadSu

文档评论(0)

南非的朋友 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档