Synopses & Reviews
Threads are essential to Java programming, but learning to use them effectively is a nontrivial task. This new edition of the classic Java Threads shows you how to take full advantage of Java's threading facilities and brings you up-to-date with the watershed changes in Java 2 Standard Edition version 5.0 (J2SE 5.0). It provides a thorough, step-by-step approach to threads programming.
Java's threading system is simple relative to other threading systems. In earlier versions of Java, this simplicity came with tradeoffs: some of the advanced features in other threading systems were not available in Java. J2SE 5.0 changes all that: it provides a large number of new thread-related classes that make the task of writing multithreaded programs that much easier.
You'll learn where to use threads to increase efficiency, how to use them effectively, and how to avoid common mistakes. This book discusses problems like deadlock, race conditions, and starvation in detail, helping you to write code without hidden bugs.
Java Threads, Third Edition, has been thoroughly expanded and revised. It incorporates the concurrency utilities from java.util.concurrent throughout. New chapters cover thread performance, using threads with Swing, threads and Collection classes, thread pools, and threads and I/O (traditional, new, and interrupted). Developers who cannot yet deploy J2SE 5.0 can use thread utilities provided in the Appendix to achieve similar functionality with earlier versions of Java.
Topics include:
- Lock starvation and deadlock detection
- Atomic classes and minimal synchronization (J2SE 5.0)
- Interaction of Java threads with Swing, I/O, and Collection classes
- Programmatically controlled locks and condition variables (J2SE 5.0)
- Thread performance and security
- Thread pools (J2SE 5.0)
- Thread groups
- Platform-specific thread scheduling
- Task schedulers (J2SE 5.0)
- Parallelizing loops for multiprocessor machines
In short, this new edition of
Java Threads covers everything you need to know about threads, from the simplest animation program to the most complex applications. If you plan to do any serious work in Java, you will find this book invaluable.
Scott Oaks is a senior software engineer for the Java Performance Engineering group at Sun Microsystems and the author of four books in the O'Reilly Java series. Formerly a senior systems engineer at Sun Microsystems, Henry Wong is an independent consultant working on various Java related projects.
Synopsis
- The previous edition of Java Threads sold over 34 thousand units, and earned over half a million dollars
- Threads may not be sexy, but they are an essential element of programming in Java, and developers need to know about the changes in the new version of Java (in beta with an expected August 2004 release)
Synopsis
Threads are essential to Java programming, but learning to use them effectively is a nontrivial task. This new edition of the classic Java Threads shows you how to take full advantage of Java's threading facilities and brings you up-to-date with the watershed changes in Java 2 Standard Edition version 5.0 (J2SE 5.0). It provides a thorough, step-by-step approach to threads programming.Java's threading system is simple relative to other threading systems. In earlier versions of Java, this simplicity came with tradeoffs: some of the advanced features in other threading systems were not available in Java. J2SE 5.0 changes all that: it provides a large number of new thread-related classes that make the task of writing multithreaded programs that much easier.You'll learn where to use threads to increase efficiency, how to use them effectively, and how to avoid common mistakes. This book discusses problems like deadlock, race conditions, and starvation in detail, helping you to write code without hidden bugs.Java Threads, Third Edition, has been thoroughly expanded and revised. It incorporates the concurrency utilities from java.util.concurrent throughout. New chapters cover thread performance, using threads with Swing, threads and Collection classes, thread pools, and threads and I/O (traditional, new, and interrupted). Developers who cannot yet deploy J2SE 5.0 can use thread utilities provided in the Appendix to achieve similar functionality with earlier versions of Java.Topics include:
- Lock starvation and deadlock detection
- Atomic classes and minimal synchronization (J2SE 5.0)
- Interaction of Java threads with Swing, I/O, and Collection classes
- Programmatically controlled locks and condition variables (J2SE 5.0)
- Thread performance and security
- Thread pools (J2SE 5.0)
- Thread groups
- Platform-specific thread scheduling
- Task schedulers (J2SE 5.0)
- Parallelizing loops for multiprocessor machines
In short, this new edition of
Java Threads covers everything you need to know about threads, from the simplest animation program to the most complex applications. If you plan to do any serious work in Java, you will find this book invaluable.Scott Oaks is a senior software engineer for the Java Performance Engineering group at Sun Microsystems and the author of four books in the O'Reilly Java series.Formerly a senior systems engineer at Sun Microsystems, Henry Wong is an independent consultant working on various Java related projects.
About the Author
Henry Wong is a senior consultant at Enigmatec Corporation since 2004 -- involved with many Java related projects. In this role, he has worked with many hardware platforms, operating systems, application servers, and third party packages and services.
Henry previously worked as a computer engineer at Sun Microsystems from 1989 to 2003. Originally hired as a consultant to help customers with special device drivers, kernel modifications, and DOS interoperability products, Henry has also worked on Solaris ports, performance tuning projects, and multithreaded design and implementations for benchmarks and demos. Since early 1995, Henry has been involved in developing Java prototypes and supporting customers who are using Java.
Prior to working at Sun, Henry earned a Bachelor of Science degree in chemical engineering from The Cooper Union in 1987. He joined a small software company in 1986 working on SCSI device drivers, image and audio data compression, and graphics tools used for a medical information system.
When not in front of a computer, Henry is an instrument rated private pilot, who also likes to dabble in archery, cooking, Scuba diving, and traveling to different places with his wife, Nini.Henry Wong is an independent consultant, involved in various Java related projects. Henry previously worked
as a computer engineer at Sun Microsystems from 1989
to 2003. Originally hired as a consultant to help customers with special device drivers, kernel modifications, and DOS interoperability products, Henry has also worked on Solaris ports, performance tuning projects, and multithreaded design and implementations for benchmarks and demos. Since early 1995, Henry has been involved in developing Java prototypes and supporting customers who are using
Java.
Prior to working at Sun, Henry earned a Bachelor of Science degree in chemical engineering from The Cooper Union in 1987. He joined a small software company in 1986 working on SCSI device drivers, image and audio data compression, and graphics tools used for a medical information system.
Table of Contents
Preface; Who Should Read This Book?; Versions Used in This Book; What's New in This Edition?; Organization of This Book; Conventions Used in This Book; Code Examples; How to Contact Us; Safari Enabled; Acknowledgments; Chapter 1: Introduction to Threads; 1.1 Java Terms; 1.2 About the Examples; 1.3 Why Threads?; 1.4 Summary; Chapter 2: Thread Creation and Management; 2.1 What Is a Thread?; 2.2 Creating a Thread; 2.3 The Lifecycle of a Thread; 2.4 Two Approaches to Stopping a Thread; 2.5 The Runnable Interface; 2.6 Threads and Objects; 2.7 Summary; Chapter 3: Data Synchronization; 3.1 The Synchronized Keyword; 3.2 The Volatile Keyword; 3.3 More on Race Conditions; 3.4 Explicit Locking; 3.5 Lock Scope; 3.6 Choosing a Locking Mechanism; 3.7 Nested Locks; 3.8 Deadlock; 3.9 Lock Fairness; 3.10 Summary; Chapter 4: Thread Notification; 4.1 Wait and Notify; 4.2 Condition Variables; 4.3 Summary; Chapter 5: Minimal Synchronization Techniques; 5.1 Can You Avoid Synchronization?; 5.2 Atomic Variables; 5.3 Thread Local Variables; 5.4 Summary; Chapter 6: Advanced Synchronization Topics; 6.1 Synchronization Terms; 6.2 Synchronization Classes Added in J2SE 5.0; 6.3 Preventing Deadlock; 6.4 Deadlock Detection; 6.5 Lock Starvation; 6.6 Summary; Chapter 7: Threads and Swing; 7.1 Swing Threading Restrictions; 7.2 Processing on the Event-Dispatching Thread; 7.3 Using invokeLater( ) and invokeAndWait( ); 7.4 Long-Running Event Callbacks; 7.5 Summary; Chapter 8: Threads and Collection Classes; 8.1 Overview of Collection Classes; 8.2 Synchronization and Collection Classes; 8.3 The Producer/Consumer Pattern; 8.4 Using the Collection Classes; 8.5 Summary; Chapter 9: Thread Scheduling; 9.1 An Overview of Thread Scheduling; 9.2 Scheduling with Thread Priorities; 9.3 Popular Threading Implementations; 9.4 Summary; Chapter 10: Thread Pools; 10.1 Why Thread Pools?; 10.2 Executors; 10.3 Using a Thread Pool; 10.4 Queues and Sizes; 10.5 Thread Creation; 10.6 Callable Tasks and Future Results; 10.7 Single-Threaded Access; 10.8 Summary; Chapter 11: Task Scheduling; 11.1 Overview of Task Scheduling; 11.2 The java.util.Timer Class; 11.3 The javax.swing.Timer Class; 11.4 The ScheduledThreadPoolExecutor Class; 11.5 Summary; Chapter 12: Threads and I/O; 12.1 A Traditional I/O Server; 12.2 A New I/O Server; 12.3 Interrupted I/O; 12.4 Summary; Chapter 13: Miscellaneous Thread Topics; 13.1 Thread Groups; 13.2 Threads and Java Security; 13.3 Daemon Threads; 13.4 Threads and Class Loading; 13.5 Threads and Exception Handling; 13.6 Threads, Stacks, and Memory Usage; 13.7 Summary; Chapter 14: Thread Performance; 14.1 Overview of Performance; 14.2 Synchronized Collections; 14.3 Atomic Variables and Contended Synchronization; 14.4 Thread Creation and Thread Pools; 14.5 Summary; Chapter 15: Parallelizing Loops for Multiprocessor Machines; 15.1 Parallelizing a Single-Threaded Program; 15.2 Multiprocessor Scaling; 15.3 Summary; Appendix A: Superseded Threading Utilities; A.1 The BusyFlag Class; A.2 The CondVar Class; A.3 The Barrier Class; A.4 The RWLock Class; A.5 The ThreadPool Class; A.6 The JobScheduler Class; A.7 Summary; Colophon;