java线程学习总结

java线程学习总结

ID:37857480

大小:110.00 KB

页数:11页

时间:2019-06-01

java线程学习总结_第1页
java线程学习总结_第2页
java线程学习总结_第3页
java线程学习总结_第4页
java线程学习总结_第5页
资源描述:

《java线程学习总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、java线程学习总结1(javathread培训总结1)wdz123@hotmail.comjava线程学习总结1(javathread培训总结1)1.线程中一些基本术语和概念11.1线程的几个状态11.2Daemon线程21.3锁的定义21.4死锁21.5.Java对象关于锁的几个方法21.6锁对象(实例方法的锁)31.7类锁31.8.线程安全方法与线程不安全方法41.9类锁和实例锁混合使用41.10锁的粒度问题41.11.读写锁41.12volatile42.线程之间的通讯52.1屏障52.2.锁工具类52.3.条件变量63.Java线程调度63.1Java优先级63.2.绿

2、色线程63.3本地线程73.4Windows本地线程73.5线程优先级倒置与继承73.6循环调度84.线程池85工作队列96.参考资料9Page11of11myblogjava线程学习总结1(javathread培训总结1)wdz123@hotmail.com1.线程中一些基本术语和概念1.1线程的几个状态初始化状态就绪状态运行状态阻塞状态终止状态1.2Daemon线程Daemon线程区别一般线程之处是:主程序一旦结束,Daemon线程就会结束。1.3锁的定义为了协调多个并发运行的线程使用共享资源才引入了锁的概念。1.4死锁任何多线程应用程序都有死锁风险。当一组线程中的每一个都在

3、等待一个只有该组中另一个线程才能引起的事件时,我们就说这组线程死锁了。换一个说法就是一组线程中的每一个成员都在等待别的成员占有的资源时候,就可以说这组线程进入了死锁。死锁的最简单情形是:线程A持有对象X的独占锁,并且在等待对象Y的锁,而线程B持有对象Y的独占锁,却在等待对象X的锁。除非有某种方法来打破对锁的等待(Java锁定不支持这种方法),否则死锁的线程将永远等下去。Page11of11myblogjava线程学习总结1(javathread培训总结1)wdz123@hotmail.com1.5.Java对象关于锁的几个方法1.5.1wait方法wait方法是java根对象Ob

4、ject含有的方法,表示等待获取某个锁。在wait方法进入前,会释放相应的锁,在wait方法返回时,会再次获得某个锁。如果wait()方法不带有参数,那只有当持有该对象锁的其他线程调用了notify或者notifyAll方法,才有可能再次获得该对象的锁。如果wait()方法带有参数,比如:wait(10),那当持有该对象锁的其他线程调用了notify或者notifyAll方法,或者指定时间已经过去了,才有可能再次获得该对象的锁。参考thread.lock.SleepAndWait1.5.2notify/notifyAll方法这里我就不再说明了。哈哈,偷点懒。1.5.3yield方

5、法yield()会自动放弃CPU,有时比sleep更能提升性能。1.6锁对象(实例方法的锁)在同步代码块中使用锁的时候,担当锁的对象可以是这个代码所在对象本身或者一个单独的对象担任,但是一定要确保锁对象不能为空。如果对一个null对象加锁,会产生异常的。原则上不要选择一个可能在锁的作用域中会改变值的实例变量作为锁对象。锁对象,一种是对象自己担任,一种是定义一个普通的对象作为privateproperty来担任,另外一种是建立一个新的类,然后用该类的实例来担任。参考:thread.lock.UseSelfAsLock,使用对象自己做锁对象thread.lock.UseObjAsLo

6、ck使用一个实例对象作锁对象thread.lock.UseAFinalObjAsLock使用常量对象作为一个锁对象Page11of11myblogjava线程学习总结1(javathread培训总结1)wdz123@hotmail.com1.7类锁实例方法存在同步的问题,同样,类方法也存在需要同步的情形。一般类方法的类锁是一个staticobject来担任的。当然也可以采用类本身的类对象来作为类锁。一个类的实例方法可以获得该类实例锁,还可以尝试去访问类方法,包含类同步方法,去获得类锁。一个类的类方法,可以尝试获得类锁,但是不可以尝试直接获得实例锁。需要先生成一个实例,然后在申请获

7、得这个实例的实例锁。参考thread.lock.UseStaticObjAsStaticLock使用类的属性对象作为类锁。thread.lock.UseClassAsStaticLock使用类的类对象作为类锁1.8.线程安全方法与线程不安全方法如果一个对象的所有的public方法都是同步方法,也就是说是public方法是线程安全的,那该对象的private方法,在不考虑继承的情况下,可以设置为不是线程安全的方法。参考thread.lock.SynMethrodAndNotSynM

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。