- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 Java的多线程机制 8.1 了解Java中的进程与线程 8.2 掌握线程的创建与启动方法 本章小结 * Java程序设计实例与操作 * 8.1 了解Java中的进程与线程 8.2 掌握线程的创建与启动方法 8.3 了解线程的优先级设置与调度方法 8.4 掌握多线程的同步机制 一、进程与线程 对于一般程序而言,其结构大致可以划分为一个入口、一个出口和一个顺序执行的语句序列。程序开始运行时,系统从程序入口开始,按照语句的执行顺序(包括顺序、分支和循环)完成相应指令,然后从出口退出,同时整个程序结束。这样的结构称为进程,或者说进程就是程序的一次动态执行过程。一个进程既包括程序的代码,同时也包括了系统的资源,如CPU、内存空间等,但不同的进程所占用的系统资源都是独立的。 线程是比进程更小的执行单位。一个进程在执行过程中,为了同时完成多个操作,可以产生多个线程。与进程不同的是,线程没有入口,也没有出口,其自身不能自动运行,而必须存在于某一进程中,由进程触发执行。在系统资源的使用上,属于同一进程的所有线程共享该进程的系统资源。 每个Java程序都有一个默认的主线程。对于应用程序,主线程是main()方法执行的线索,要想实现多线程,必须在主线程中创建新的线程对象。新建的线程在一个完整的生命周期中通常需要经历创建、就绪、运行、阻塞、死亡五种状态 。 二、线程的生命周期 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。 例如,下面的语句可以创建一个新的线程: myThread myThread1=new myThread1(); myThread线程类有两种实现方式,一种是继承Thread类;另一种是实现Runnable接口。 1.新建状态 一个线程对象调用start()方法,即可使其处于就绪状态。处于就绪状态的线程具备了除CPU资源之外的运行线程所需的所有资源。也就是说,就绪状态的线程排队等候CPU资源,而这将由系统进行调度。 2.就绪状态 处于就绪状态的线程获得CPU资源后即处于运行状态。每个Thread类及其子类的对象都有一个run()方法,当线程处于运行状态时,它将自动调用自身的run()方法,并开始执行run()方法中的内容。 3.运行状态 处于运行状态的线程如果因为某种原因不能继续执行,则进入阻塞状态。阻塞状态与就绪状态的区别是:就绪状态只是因为缺少CPU资源不能执行,而阻塞状态可能会由于各种原因使得线程不能执行,而不仅仅是CPU资源。引起阻塞的原因解除以后,线程再次转为就绪状态,等待分配CPU资源。 4.阻塞状态 当线程执行完run()方法的内容或被强制终止时,则处于死亡状态。至此,线程的生命周期结束。 5.死亡状态 在Java中,创建线程有两种方式:一种是继承java.lang.Thread类,另一种是实现Runnable接口。 一、创建线程 1.通过继承Thread类创建线程类 Java中定义了线程类Thread,用户可以通过继承Thread类,覆盖其run()方法创建线程类。 通过继承Thread类创建线程的语法格式如下: class ClassName extends Thread{ public void run(){ ……//线程执行代码 } } 2.通过实现Runnable接口创建线程类 另一种方式是通过实现Runnable接口创建线程类,进而实现Runnable接口中的run()方法。其语法格式如下: class ClassName implements Runnable{ public void run(){ ……//线程执行代码 } } //实现Runnable接口创建线程类 class MyThread implements Runnable{ MyThread public void run(){ //实现Runnable接口的run()方法 for(int i=0;i9;i++){ System.out.println(i); } } } 二、启动线程 1.通过继承Thread类线程的启动 继承Thread类方式的线程的启动非常简单,只要在创建线程类对象后,调用类的start()方法即可。 package Chapter8; class MyThread extends
文档评论(0)