多线程slides培训材料.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文档。上传文档
查看更多
多线程 线程概念 通过扩展Thread类创建线程 通过实现Runnable接口创建线程 控制线程和线程状态 线程组 线程同步 为applet创建线程 实例学习 线程概念 线程概念(续) 一个线程(thread)是程序中完成一个任务的有始有终的执行流 多线程可以使程序反应更快、交互性更强,并能够提高执行效率 可以通过扩展Thread类或实现Runnable接口来创建线程 扩展Thread类创建线程 示例:使用Thread类创建并运行线程 在这个例子中,创建并运行如下三个线程: 第一个的线程打印100次字母a 第二个的线程打印100次字母b 第三个线程打印整数1到100 实现Runnable接口创建线程 示例:使用Runnable接口创建并运行线程 在这个例子中,创建并运行如下三个线程: 第一个的线程打印100次字母a 第二个的线程打印100次字母b 第三个线程打印整数1到100 控制线程 void run() Java运行系统调用该方法来执行线程。必须覆盖该方法并且提供线程执行的代码 void start() 启动线程,引起对Run()方法的调用。客户类中的可运行对象调用本方法 void stop()(deprecated) 停止线程 控制线程(续) void suspend()(deprecated) 挂起线程. 使用 resume() 方法唤醒进程 void resume()(deprecated) 唤醒用suspend() 方法挂起的进程 static void sleep(long millis) throws InterruptedException 将可运行的对象置为休眠状态,休眠时间为指定的毫秒;该方法是一个静态方法 线程的优先级 Java给每个线程指定一个优先级。默认情况下线程继承生成它的线程的优先级 改变和得到线程优先级 setPriority getPriority 优先级包含的一些常量 Thread.MIN_PRIORITY Thread.MAX_PRIORITY Thread.NORM_PRIORITY 线程状态 线程状态(续1) 新线程态(New Thread) 产生一个Thread对象就生成一个新线程。当线程处于“新线程”状态时,仅仅是一个空线程对象,它还没有分配到系统资源。因此只能启动或终止它。任何其他操作都会引发异常 可运行态(Runnable)(就绪状态+运行状态) start()方法产生运行线程所必须的资源,调度线程执行,并且调用线程的run()方法。在这时线程处于可运行态。该状态不称为运行态是因为这时的线程并不总是一直占用处理机。特别是对于只有一个处理机的PC而言,任何时刻只能有一个处于可运行态的线程占用处理 机。Java通过调度来实现多线程对处理机的共享 线程状态(续2) 非运行态(Not Runnable)(阻塞状态) 当以下事件发生时,线程进入非运行态 suspend()方法被调用 sleep()方法被调用 线程使用wait()来等待条件变量 线程处于I/O等待 死亡态(Dead)(结束状态) 当run()方法返回或别的线程调用stop()方法,线程进入死亡态 。通常Applet使用它的stop()方法来终止它产生的所有线程 线程组 使用构造方法ThreadGroup来构造线程组 : ThreadGroup g = new ThreadGroup(timer thread group); 使用Thread 构造方法,将一个线程放到线程组中: Thread t = new Thread(g, new ThreadClass(), This thread); 线程组(续) 使用activeCount() 确定组里有多少个线程处于运行阶段: System.out.println(The number of runnable threads in the group + g.activeCount()); 线程的同步 如果一个共享资源被多个线程同时访问,可能会遭到破坏 例如:两个unsynchronized 线程同时进入相同的银行账户,资源将会引起冲突 示例:演示资源冲突 在这个例子中,创建并启动了100个线程,每个线程都往储钱罐中投入一便士,假定开始时储钱罐是空的 示例:演示资源冲突(续) synchronized 关键字 为避免资源冲突,Java使用关键字synchronized使方法通信同步 同步代码块 同步方法 重写上面的程序如下: 为applet创建线程 在“显示时钟”里,在applet中绘制时钟并显示当前时间。时钟显示后并不走动。怎么样才能让时钟每一秒都显示新的当前时间呢? 让时钟走动的关键是每一秒都重画一次显示当前时间的时钟。可以使用下面给出的代码覆盖Curr

文档评论(0)

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

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

1亿VIP精品文档

相关文档