jixuaa 发表于 2015-10-4 12:09:41

IBM Java多线程

结束语和参考资料
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 中免费教程的完整清单。
页: [1]
查看完整版本: IBM Java多线程