- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
day 1111-01多线程进程:是一个正在执行中的程序。每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元。线程:就是进程中的一个独立的控制单元;线程在控制中进程的执行。一个进程中至少有一个线程。Java 的jvm启动的时候会有一个进程java.exe 。该进程中至少一个线程负责java程序的执行,而且这个线程运行的代码存在与main方法中。该线程称之为主线程。扩展:其实更细节说明jvm,jvm启动时至少有两个线程可以分析的出来,一个是执行main函数的线程,该线程的代码都定义在main函数中,另一个是负责垃圾回收的线程。垃圾回收机制Object:finalize();运行垃圾回收器System:static gc():11-02、03如何在自定义代码中,自定义线程?通过对API的查找,Java已经提供了对线程这类事物的描述,就是Thread类。创建线程的第一种方式:继承Thread类。建立子类对象的同时线程也被创建。步骤:1.定义类继承Thread;2.复写父类中的方法;目的:将自定义代码存储在run方法中,让线程运行。3.调用线程的start方法,该方法有两个作用:启动线程,调用run方法。为什么要覆盖run方法:Thread类用于描述线程,该类就定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法。也就是说Thread类中的run方法,用于存储线程要运行的代码class Demo extends Thread{public void run() //覆盖父类run方法{for( x=0 , x60 , x++)System.out.println(“Demo Run--”+x);}}主函数:Demo d = new Demo ; //建立一个对象就是创建一个线程。创建的时候就完成了名称的定义。12-6d.start() ; //运行结果:Demo Run 和Hello World两个同时随机打印,且每次打印结果基本都不一样//调用start方法。开启线程并执行线程的run方法。主线程和自定义线程都执行d.run(); //运行结果:先打印Demo Run,再打印Hello World。//仅仅是对象调用方法,而线程创建了但并没有运行。属于单线程程序,有主线程执行,执行完run再执行下面的语句。for( x=0 , x60 , x++) //主线程System.out.println(“Hello World--------”+x);发现运行结果每一次都不同。因为多个线程获取cpu的执行权,cpu执行到谁,谁就运行。明确一点:在某一时刻,只能有一个程序在运行。(多核除外)11-04练习:创建两个线程,和主线程交替运行11-05线程的几种常见状态:临时状态(阻塞)(具备运行资格,但没有执行权)-------| /|\ |------------/|\ | | start() \|/ sleep(time)(时间到就继续运行) |被创建----------运行---------------------------------------------冻结(放弃了执行资格) | wait()(通过motify()使其继续运行) | |stop(); | \|/ run方法结束 \|/消亡 ----------------------------------------------11-06线程都有自己默认的名称:Thread-编号(编号从0开始)static Thread currentThread() :获取当前线程对象。getName() :获取线程名称设置线程名称:setName或构造函数。11-07、08 d:java\code\day11\TicketDemo.java需求:简单的买票程序。创建线程的另一个方法:声明实现Runnable接口的类,该类然后实现run方法。在创建Thread时作为一个参数来传递并启动。步骤:定义类实现Runnable接口。覆盖Runnable接口中的run方法。(将线程要运行的代码存放在run方法中)通过Thread类建立线程对象。将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。为什么
文档评论(0)