java线程复习.docVIP

  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线程复习

线程复习 (扩展:静态的生命周期较长;接口中复写的方法如果出现异常,不能抛,只能try;) 进程:是一个正在执行中的程序,该顺序是一个执行路径,是cpu在做着快速切换,执行着电脑里面很多程序。 线程:线程是进程中的内容,每个进程里面至少有一个线程,在某一时刻,只能有一个程序在运行(多核除外) 扩展:其实更细节的说jvm,jvm启动时其实不止一个线程(主线程),还有一个垃圾回收装置的线程。 创建线程的第一种方式:继承Thread类 步骤:1,定义类继承Thread,2复写Thread类中的run方法(目的:将自定义的代码存储在run方法中,让线程运行);3调用线程的start方法,(该方法有两个作用:启动线程,调用run方法)。 Demo d=new Demo();Demo d1=new Demo();Demo d2=new Demo();---d.start();d1.start();d2.start();(中间千万别加hread t = new Thread(d)) 创建线程的第二种方式:实现runnable接口 步骤:1,定义类实现Runnable接口;2,覆盖Runnable接口中的run方法;3,通过Thread类建立线程对象;4,将Runnable接口的子类对象作为实际参数传递给Thread类中的构造函数。5,调用Thread类中的start方法,开启线程并调用Runnable接口子类的run方法。 Ticket t=new Ticket();----Thread t1= new Thread(t); Thread t2= new Thread(t); Thread t3= new Thread(t);-----t.start() t1.start(); t2.start(); 实现方法和继承方式有什么区别?--------1,继承Thread:线程代码存放在Thread子类的run方法中;实现Runnable:线程代码存在接口的子类的run方法中。2,实现方式的好处:避免了单继承的局限性,在定义线程时,建议使用实现方式(面试的时候经常考) 为什么要覆盖run方法? 答:Thread类是用于描述线程,该类定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法。也就是说Thread类中的run方法,用于存储线程要运行的代码 获取线程对象:Thread.currentThread() 获取线程名称:getName() 设置线程名称:setName或者构造函数 多线程运行出现安全问题解决办法(安全问题:卖票程序):同步代码块; 格式:synchronized(对象){ 需要被同步的代码。。。} 注释:哪些代码需要被同步?----看哪些代码在操作共享数据。 对象如同锁,持有锁的线程可以在同步中执行,没有持有锁的线程即使获取cpu的执行权,也进不去,因为没有锁。 注意:同步的前提:1,必须要有两个或者两个以上的线程。2,必须是多高线程使用同一锁。3,同步有两种表现形式:同步代码块和同步函数。(public synchronized void show(){}) 同步弊端:每次都要判断锁,消耗了资源。 同步函数用的是哪个锁?----函数需要被对象调用,那么函数都有一个所属对象引用,就是this,所以同步函数使用的锁就是this。 Try{Thread.sleep(10);}catch(Exception e){} ----这句话的意思是让主线程睡起,缓和其他线程的执行速度。 同步函数public synchronized void show(){}---使用的锁是this。 如果同步函数被静态函数修饰后,锁是什么呢?----通过验证,发现不是this,因为静态方法中也不可以定义this,静态进内存时,内存中没有本类对象,但是一定有该类对应的字节码文件对象-----类名.class,该对象的类型是class 即public static synchronized void show(类名.class){} 同步的弊端:死锁----同步中嵌套同步,而锁不同。(面试经常会考,请给我写个死锁程序) class Test implements Runnable { private boolean flag; Test(boolean flag) { this.flag = flag; } public void run() { if(flag) { synchronized(MyLock.locka) { System.out.println(if locka); synchronized(MyLock.lockb)

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档