IBM Java多线程 - 7.结束语和参考资料

结束语和参考资料
1. 结束语
2. 参考资料
3. 反馈意见

结束语第 1 页(共3 页)


每个 Java 程序都使用线程,不论您知道与否。如果您正在使用 Java UI 工具箱(AWT 或 Swing)、Java Servlet、RMI、JavaServer Pages 或 Enterprise JavaBeans 技术,您可能没有意识到您正在使用线程。

在许多情况中,您可能想要显式地使用线程以提高程序的性能、响应速度或组织。这些情况包括:

  • 在执行耗时较长的任务时,使用户界面的响应速度更快
  • 利用多处理器系统以并行处理多个任务
  • 简化仿真或基于代理的系统的建模
  • 执行异步或后台处理

虽然线程 API 很简单,但编写线程安全的程序并不容易。在线程之间共享变量时,必须非常小心,以确保正确同步了对它们的读写访问。当写一个可能接下来由另一个线程读取的变量,或者读取可能由另一个线程写过的变量时,必须使用同步以确保对数据的更改在线程之间是可见的。

当使用同步保护共享变量时,必须确保不仅使用了同步,而且读取器和写入器在同一个监控器上同步。而且,如果依赖对象的状态在多个操作中保持相同,或者依赖多个变量互相保持一致(或者,与它们过去的值一致),那么必须使用同步来强制实现这一点。但简单地同步一个类中的每一个方法并不能使它变成线程安全的 ― 只会使它更容易发生死锁。

参考资料第 2 页(共3 页)


下载

  • 请研究 Doug Lea 的 util.concurrent 包(http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html),它包含了许多用于构建有效并发应用程序的有用的类。

文章和教程

  • Synchronization and the Java Memory Model”(http://gee.cs.oswego.edu/dl/cpj/jmm.html)摘录自 Doug Lea 撰写的着重讨论 synchronized 实际意义的一书。

  • 在“Writing multithreading Java applications”(developerWorks,2001 年 2 月,http://www-106.ibm.com/developerworks/library/j-thread.html)一文中,Alex Roetter 概述了 Java 多线程化中涉及的问题,并提供了常见问题的解决方案。

  • Brian Goetz 撰写的“Threading lightly, Part 1: Synchronization is not the enemy”(developerWorks,2001 年 7 月,http://www-106.ibm.com/developerworks/library/j-threads1/)研究了如何管理并发应用程序的性能。

  • Jeff Friesen 撰写的“Achieve strong performance with threads”(JavaWorld,2002 年 5 月,http://www.javaworld.com/javaworld/jw-05-2002/jw-0503-java101.html)是关于使用线程的一个四部分教程。

  • Double-checked locking: Clever, but broken”(JavaWorld,2001 年 2 月,http://www.javaworld.com/jw-02-2001/jw-0209-double.html)详细研究了 Java Memory Model,以及在某些情况下同步失败的惊人后果。

  • 线程安全性是棘手的问题。“Java theory and practice: Safe construction techniques”(developerWorks,2002 年 6 月,http://www-106.ibm.com/developerworks/library/j-jtp0618.html)提供了一些安全地构造对象的提示。

  • 在“Threads and Swing”(http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html)中,Sun 公司的技术人员研究了安全地使用 Swing 的规则,并且引入了有用的 SwingWorker 类。

推荐书籍

  • Doug Lea 的 Concurrent Programming in Java,第二版(Addison-Wesley,1999 年,http://www.amazon.com/exec/obidos/ASIN/0201310090/none0b69)是关于围绕在 Java 应用程序中多线程编程的难解问题的权威书籍。

  • Paul Hyde 的 Java Thread Programming(http://www.amazon.com/exec/obidos/ASIN/0672315858/none0b69)是关于许多现实世界中多线程问题的好教程和参考大全。

  • Allen Holub 的 Taming Java Threads(http://www.amazon.com/exec/obidos/ASIN/1893115100/none0b69)一书是 Java 线程编程难题的有趣介绍。

其它参考资料

  • util.concurrent 包正在根据 Java Community Process JSR 166(http://www.jcp.org/jsr/detail/166.jsp)进行正式化,以便包含在 JDK 的 1.5 发行版中。

  • Foxtrot 项目(http://foxtrot.sourceforge.net/)是另一个在 Swing 应用程序中使用线程的方法,它可能更简单。

  • developerWorks Java 技术专区(http://www-900.ibm.com/developerworks/cn/java/)中,您会找到几百篇关于 Java 编程的各个方面的文章。

  • 请访问 developerWorks Java 技术教程页面(http://www-900.ibm.com/developerWorks/cn/cnedu.nsf/java-onlinecourse-bytitle),以获取 developerWorks 中免费教程的完整清单。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值