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线程学习总结

java线程学习总结1(java thread培训总结1) 1.线程中一些基本术语和概念 1 1.1线程的几个状态 1 1.2 Daemon线程 2 1.3锁的定义 2 1.4死锁 2 1.5.Java对象关于锁的几个方法 2 1.6锁对象(实例方法的锁) 3 1.7类锁 3 1.8.线程安全方法与线程不安全方法 4 1.9类锁和实例锁混合使用 4 1.10锁的粒度问题 4 1.11.读写锁 4 1.12 volatile 4 2.线程之间的通讯 5 2.1屏障 5 2.2.锁工具类 5 2.3.条件变量 6 3. Java线程调度 6 3.1 Java优先级 6 3.2. 绿色线程 6 3.3 本地线程 7 3.4 Windows本地线程 7 3.5线程优先级倒置与继承 7 3.6循环调度 8 4.线程池 8 5工作队列 9 6.参考资料 9 1.线程中一些基本术语和概念 1.1线程的几个状态 初始化状态 就绪状态 运行状态 阻塞状态 终止状态 1.2 Daemon线程Daemon线程区别一般线程之处是:主程序一旦结束,Daemon线程就会结束。死锁任何多线程应用程序都有死锁风险。当一组线程中的每一个都在等待一个只有该组中另一个线程才能引起的事件时,我们就说这组线程死锁了。一组线程死锁的最简单情形是:线程 A 持有对象 X 的独占锁,并且在等待对象 Y 的锁,而线程 B 持有对象 Y 的独占锁,却在等待对象 X 的锁。除非有某种方法来打破对锁的等待(Java 锁定不支持这种方法),否则死锁的线程将永远等下去。Java对象关于锁的几个方法 1.5.1 wait方法 wait方法是java根对象Object含有的方法,表示等待获取某个锁。在wait方法进入前,会释放相应的锁,在wait方法返回时,会再次获得某个锁。 如果wait()方法不带有参数,那只有当持有该对象锁的其他线程调用了notify或者notifyAll方法,才有可能再次获得该对象的锁。 如果wait()方法带有参数,比如:wait(10),那当持有该对象锁的其他线程调用了notify或者notifyAll方法,或者指定时间已经过去了,才有可能再次获得该对象的锁。 参考 thread.lock.SleepAndWait 1.5.2 notify/notifyAll方法 这里我就不再说明了。哈哈,偷点懒。 1.5.3 yield方法 yield()会自动放弃CPU,有时比sleep更能提升性能thread.lock.UseSelfAsLock,使用对象自己做锁对象 thread.lock.UseObjAsLock 使用一个实例对象作锁对象 thread.lock.UseAFinalObjAsLock使用常量对象作为一个锁对象 1.7类锁 实例方法存在同步的问题,同样,类方法也存在需要同步的情形。一般类方法的类锁是一个static object来担任的。当然也可以采用类本身的类对象来作为类锁。 一个类的实例方法可以获得该类实例锁,还可以尝试去访问类方法,包含类同步方法,去获得类锁。 一个类的类方法,可以尝试获得类锁,但是不可以尝试直接获得实例锁。需要先生成一个实例,然后在申请获得这个实例的实例锁。 参考 thread.lock.UseStaticObjAsStaticLock 使用类的属性对象作为类锁。 thread.lock.UseClassAsStaticLock使用类的类对象作为类锁 1.8.线程安全方法与线程不安全方法 如果一个对象的所有的public方法都是同步方法,也就是说是public方法是线程安全的,那该对象的private方法,在不考虑继承的情况下,可以设置为不是线程安全的方法。 参考 thread.lock.SynMethrodAndNotSynMethrod 1.9类锁和实例锁混合使用 在实例方法中混合使用类锁和实例锁;可以根据前面说的那样使用实例锁和类锁。 在类方法中混合使用类锁和实例锁,可以根据前面说的那样使用类锁,为了使用实例锁,先得生成一个实例,然后实例锁。 参考 thread.lock.StaticLockAndObjLock 1.10锁的粒度问题。 为了解决对象锁的粒度过粗,会导死锁出现的可能性加大,锁的粒度过细,会程序开发维护的工作加大。对于锁的粒度大小,这完全要根据实际开发需要来考虑,很难有一个统一的标准。 1.11.读写锁一个读写锁支持多个线程同时访问一个对象,但是在同一时刻只有一个线程可以修改此对象,并且在访问进行时不能修改。thread.lock.ReadWriteLock 1.12 volatile 在Java中设置变量值的操作,除了long和double类型的变

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档