Java基础系列-多线程.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文档。上传文档
查看更多
Java基础系列-多线程

Java基础系列 --多线程 一、多线程基本概念 1、进程和线程: 进程: 是一个在内存中独立运行的程序,有自己的地址空间 ,进程切换的开销大。如正在运行的写字板程序就是一个进程。 设置一个进程要占用相当一部分处理器时间和内存资源。 大多数操作系统不允许进程访问其他进程的内存空间,进程间的通信很不方便,编程模型比较复杂。 线程: 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。 线程执行的机理 CPU按分配的时间片,轮流执行各线程,由于每个线程执行时间极短(20ms),等效各线程并行运行。 多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。 多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度,同步等问题 2、多线程的优势: 提高应用程序的响应:可以对任何一个包含许多相互独立的活动的程序进行重新设计,以便将每个活动定义为一个线程。例如,多线程GUI 的用户不必等待一个活动完成即可启动另一个活动。 更有效地使用多处理器 改进程序结构:许多应用程序都以更有效的方式构造为多个独立或半独立的执行单元,而非整块的单个线程。多线程程序比单线程程序更能适应用户需求的变化。 占用较少的系统资源 3、多线程的应用: 多线程的应用范围很广。但在一般情况下,程序的一些部分同特定的事件或资源联系在一起,同时又不想为它而暂停程序其他部分的执行。这样一来,就可考虑创建一个线程,令其与那个事件或资源关联到一起,并让它独立于主程序运行。一个很好的例子便是GUI界面中的“Quit”或“退出”按钮——我们并不希望在程序的每一部分代码中都轮询这个按钮,同时又希望该按钮能及时地作出响应(使程序看起来似乎经常都在轮询它)。事实上,多线程最主要的一个用途就是构建一个“反应灵敏”的用户界面。 4、Java多线程 主线程 在任何Java程序启动时,一个线程立刻运行(即main方法对应的线程),该线程通常称为程序的主线程。 主线程的特点: 它是产生其他子线程的线程。 它不一定是最后完成执行的线程,子线程可能在它结束之后还在运行。 线程体 每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体(即线程的可执行代码) 二、创建线程 Thread类 Runnable接口 创建线程 线程生命期 线程的优先级 线程组 线程同步 线程间通信 挂起、恢复和终止线程 daemon线程 2.1 Thread类 封装了Java程序中一个线程对象需要拥有的属性和方法 继承Thread类是Java程序中创建多线程的方法之一 从Thread类派生一个子类,并创建这个子类的对象,就可以产生一个新的线程。这个子类应该重写Thread类的run方法,在run方法中写入需要在新线程中执行的语句段。这个子类的对象需要调用start方法来启动,新线程将自动进入run方法。原线程将同时继续往下执行 Thread类直接继承了Object类,并实现了Runnable接口。 2.1 Thread类--构造函数 构造函数: public Thread(); public Thread(Runnable?target); public Thread(ThreadGroup?group, Runnable?target); public Thread(String?name); public Thread(ThreadGroup?group, String?name); public Thread(Runnable?target, String?name); public Thread(ThreadGroup?group, Runnable?target, String?name); 参数说明: target:一个对象,线程启动后它的run方法会被调用。如果该参数为null,那么thread对象本身的run方法会被调用 group:线程组对象 name:新线程对象的名字 2.1 Thread类--常用方法 public void start();//启动该线程,将导致run方法被自动调用。该方法将立即返回,新线程将运行 public void r

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档