多线程46幻灯片课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多线程46幻灯片课件

java多线程 学习目标 线程的基本概念 线程的创建和启动 线程的调度和优先级 线程的状态控制 线程同步 多任务 多任务---在同一时刻似乎有多个程序(进程)在同时运行的能力 多任务管理的实现方法--- 抢占式多任务---直接中断而不需要事先和被中断程序协商(UNIX/Linux,Windows NT/XP) 协作式多任务---只有在被中断程序同意交出控制权之后才能执行中断(windows3.x和Mac OS 9和手机) 正是由于这种多任务操作系统的出现才有了多线程这个概念 线程概述 每个进程都有独立的代码和数据空间,进程切换到开销大。 线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(标识该线程代码运行到那个地方),线程切换的开销小 多进程:在多任务操作系统中能(同时)运行多个任务(程序) 多线程:在同一应用程序中有多个顺序流(多个顺序流被称为多线程)(同时)执行 注意:同时是指同一个时间段,是因为cpu把时间段分成很多个时间片,同一个时间片运行不同的进程或线程,再因为cpu运行的速度相当的快,所以我们感觉他们是在同一时间内完成多个事情 每一个进程分配一块内存空间,每一个进程的多个线程共用同一个内存 线程的创建和启动 创建线程有两种方式: 继承java.lang.Thread类 实现java.lang.Runnable接口 继承java.lang.Thread类 Thread类代表线程类,它的最主要的两个方法是: run()----------包含线程运行时所要执行的代码,称为线程体,是线程启动的入口 start()--------用于启动线程 说明:用户定义的线程类只需要继承Thread类,覆盖Thread类的run()方法,最后使用start()就可以启动用户定义的线程了 Java线程模型 虚拟的CPU,由java.lang.Thread类封装和虚拟CPU来实现。 CPU所执行的代码,传递给Thread类对象。 CPU所处理的数据,传递给Thread类对象。 线程例子 public class ThreadDemo1 extends Thread { /** * @param args */ public static void main(String[] args) { //子线程1 ThreadDemo1 t1 = new ThreadDemo1(); //设置线程 t1.setName(线程1); //启动线程 t1.start(); //子线程2 ThreadDemo1 t2 = new ThreadDemo1(); t2.setName(线程2); t2.start(); //主线程调用 for (int i = 0; i 50; i++) { System.out.println(Thread.currentThread().getName() + ==-- + i); } } public void run() { for (int i = 0; i 50; i++) { //得到启动线程的名字 System.out.println(Thread.currentThread().getName() + == + i); } } } 启动线程 每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体。 使用start()方法,线程进入Runnable(可运行)状态,它将向线程调度器注册这个线程。 调用start()方法并不一定马上会执行这个线程,正如上面所说,它只是进入Runnable 而不是Running。 注意,不要直接在程序中调用线程的run()方法。 run()方法会被线程自动调用 Thread注意 ThreadDemo1 t1 = new ThreadDemo1(); t1.start(); t1.start();//报java.lang.IllegalThreadStateException异常 一个线程只能启动一次 Runnable创建线程的另一种方式 通过实现Runnable接口并实现接口中定义的唯一方法run(),可以创建一个线程,如果要想启动该线程就必须将实现Runnable接口的实现类对象传递到Thread对象中,再通过Thread中的start()方法来启动 用Runnable创建线程的例子 public class RunnableThread implements Runnable { //实现接口Runnable中的run方法 public void run() { for (int k = 0;k10;k++) { System.out.println(Co

文档评论(0)

a888118a + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档