- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7-线程及其操作.ppt
关于线程 并发现象在现代计算机中大量存在 多任务操作系统提供并发机制 Java提供语言级并发机制,就是内置对多线程的支持,它使得编程人员可以很方便地开发出具有多线程功能,能同时处理多个任务的功能强大的应用程序。 有了多线程,浏览器可以同时下载多个图片。 7.1 线程的实现 程序:静态的计算机语言编写的代码。 进程:程序的一次执行。 线程:程序中的部分代码的一次执行过程。 多进程:操作系统中多个程序同时执行。 多线程:程序中多个片断同时执行。 多线程的优势 多线程编程简单,效率高 能直接共享数据和资源(多进程不能) 适合于开发服务程序 如Web服务,聊天服务等 适合于开发有多种交互接口的程序 如聊天程序的客户端,网络下载工具 适合于有人机交互又有计算量的程序 如字处理程序(Word,Excel) 线程的创建 声明一个 Thread 类的子类,并覆盖 run() 方法 class mythread extends Thread { public void run( ) // 覆盖run方法 {…… } } 声明一个实现 Runnable 接口的类,并实现 run() 方法 class mythread implements Runnable{ public void run( ) //实现run方法 {…… } } Thread类的主要方法包括: (1)void run(): 线程所执行的代码。 (2)void start(): 启动线程对象,使之从新建状态转入就绪状态,多次调 用会产生异常。 下面语句创建并启动一个线程: Thread mythread = new Thread(); //声明一个对象实例,即创建一个线程 mythread.start(); //用Thread类中的start()方法启动线程 启动线程就会调用线程的run()方法。 Thread类中的run()方法没有任何操作语句 要使线程实现预定功能,必须定义自己的run()方法。 实现Runnable接口的方法 Runnable接口只有一个方法run( )。 所有实现Runnable接口的用户类都必须具体实现这个run( )方法,并定义具体操作。 创建线程的步骤: 1.定义一个实现Runnable接口的类并生成实例。 2.生成一个Thread类实例。 3.将生成的Runnable实例作为参数传递给Thread构造方法。 public class ThreadTest implements Runnable { ThreadTest myTest=new ThreadTest(); Thread myThread=new Thread(myTest); myThread.start(); } 两种线程方法的比较 直接继承Thread的特点是: 编写简单,可以直接操纵线程;但缺点也是明显的,因为若继承Thread类,就不能再继承其他类,因为Java是单重继承的语言。 使用Runnable接口特点是: 可以将Thread类与所要处理的任务的类分开,形成清晰的模型;还可以从其他类继承。 7.2 线程的状态 新建: 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态 就绪:处于新建状态的线程被启动后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件 运行:当就绪的线程被调度并获得处理器资源时,便进入运行状态, run()方法定义了线程的操作和功能 阻塞:在某种特殊情况下,被人为挂起或执行输入输出操作时,让出CPU并临时中止自己的执行,进入阻塞状态 死亡:线程完成了它的全部工作或线程被提前强制性地中止 stop()或destroy() 7.2.2 线程的调度和优先级 public static void sleep(long?millis) 当前进程休眠指定时间,单位毫秒 public static void yield() 主动让出CPU,重新排队,正在执行的线程将CPU让给其他具有相同优先级的线程,自己进入就绪状态重新排队 public final void join() join()方法使当前线程暂停执行,等待调用该方法的线程结束后再继续执行本线程。 关于线程的调度 线程调度是一个在就绪队列中排队的线程被分配给CPU资源而进入运行状态。 线程调度器按照线程的优先级决定应调度哪些线程来执行 Java线程调度是抢先式调度 新线程会继承父线程的优先级。 线程优先级常数
文档评论(0)