资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
java 线程学习总结 1(java thread 培训总结 1) wdz123hotmail.comPage 1 of 11 myblogjava 线程学习总结 1(java thread 培训总结 1)1线程中一些基本术语和概念 .11.1 线程的几个状态 .11.2 Daemon 线程 .21.3 锁的定义 .21.4 死锁 .21.5.Java 对象关于锁的几个方法 .21.6 锁对象(实例方法的锁) .31.7 类锁 .31.8.线程安全方法与线程不安全方法 .41.9 类锁和实例锁混合使用 .41.10 锁的粒度问题 .41.11.读写锁 .41.12 volatile.42线程之间的通讯 .52.1 屏障 .52.2.锁工具类 .52.3.条件变量 .63. Java 线程调度 .63.1 Java 优先级 .63.2. 绿色线程 .63.3 本地线程 .73.4 Windows 本地线程 .73.5 线程优先级倒置与继承 .73.6 循环调度 .84.线程池 .85 工作队列 .96.参考资料 .9java 线程学习总结 1(java thread 培训总结 1) wdz123hotmail.comPage 2 of 11 myblog1线程中一些基本术语和概念1.1 线程的几个状态初始化状态就绪状态运行状态阻塞状态终止状态1.2 Daemon 线程Daemon 线程区别一般线程之处是:主程序一旦结束,Daemon 线程就会结束。1.3 锁的定义为了协调多个并发运行的线程使用共享资源才引入了锁的概念。1.4 死锁任何多线程应用程序都有死锁风险。当一组线程中的每一个都在等待一个只有该组中另一个线程才能引起的事件时,我们就说这组线程 死锁 了。换一个说法就是一组线程中的每一个成员都在等待别的成员占有的资源时候,就可以说这组线程进入了死锁。死锁的最简单情形是:线程 A 持有对象 X 的独占锁,并且在等待对象 Y 的锁,而线程 B 持有对象 Y 的独占锁,却在等待对象 X 的锁。除非有某种方法来打破对锁的等待(Java 锁定不支持这种方法) ,否则死锁的线java 线程学习总结 1(java thread 培训总结 1) wdz123hotmail.comPage 3 of 11 myblog程将永远等下去。1.5.Java 对象关于锁的几个方法1.5.1 wait 方法wait 方法是 java 根对象 Object 含有的方法,表示等待获取某个锁。在 wait方法进入前,会释放相应的锁,在 wait 方法返回时,会再次获得某个锁。如果 wait()方法不带有参数,那只有当持有该对象锁的其他线程调用了notify 或者 notifyAll 方法,才有可能再次获得该对象的锁。如果 wait()方法带有参数,比如: wait(10),那当持有该对象锁的其他线程调用了 notify 或者 notifyAll 方法,或者指定时间已经过去了,才有可能再次获得该对象的锁。参考 thread.lock.SleepAndWait1.5.2 notify/notifyAll 方法这里我就不再说明了。哈哈,偷点懒。1.5.3 yield 方法yield()会自动放弃 CPU,有时比 sleep 更能提升性能。1.6 锁对象(实例方法的锁)在同步代码块中使用锁的时候,担当锁的对象可以是这个代码所在对象本身或者一个单独的对象担任,但是一定要确保锁对象不能为空。如果对一个null 对象加锁,会产生异常的。原则上不要选择一个可能在锁的作用域中会改变值的实例变量作为锁对象。锁对象,一种是对象自己担任,一种是定义一个普通的对象作为 private property 来担任,另外一种是建立一个新的类,然后用该类的实例来担任。参考 :thread.lock.UseSelfAsLock,使用对象自己做锁对象java 线程学习总结 1(java thread 培训总结 1) wdz123hotmail.comPage 4 of 11
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号