воскресенье, 27 сентября 2009 г.

Еще книги по Java Concurrent Programming

Еще книги по Java Concurrent Programming:
1) Грегори Р. Эндрюс "Основы многопоточного, параллельного и распределенного программирования" (есть у Игоря в djvu, у Ивана и Романа - в бумажном виде). Отличная книга, стоит иметь на книжной полке. Я купил в Буксе за 40 гривен. Много теории не привязанной к конкретному языку, более 250 упражнений (вообще великолепно:)). Настоящий университетский учебник.
2) "Java Thread Programming" by Paul Hyde Sams © 1999, 510 pages, ISBN: 0672315858. Очень хорошая книга для старта. Автор разбирает большинство моментов программирования потоков именно на яве. Вот оглавление:
Part I        Threads
Chapter 1 - Introduction to Threads
Chapter 2 - A Simple Two-Thread Example
Chapter 3 - Creating and Starting a Thread
Chapter 4 - Implementing Runnable Versus Extending Thread
Chapter 5 - Gracefully Stopping Threads
Chapter 6 - Thread Prioritization
Chapter 7 - Concurrent Access to Objects and Variables
Chapter 8 - Inter-thread Communication
Chapter 9 - Threads and Swing
Chapter 10 - Thread Groups
Part II        Techniques
Chapter 11 - Self-Running Objects
Chapter 12 - Exception Callback
Chapter 13 - Thread Pooling
Chapter 14 - Waiting for the Full Timeout
Chapter 15 - Breaking Out of a Blocked I/O State
Chapter 16 - The SureStop Utility
Chapter 17 - The BooleanLock Utility
Chapter 18 - First-In-First-Out (FIFO) Queue
Part III        Appendixes
Appendix A - The Thread API
Appendix B - The ThreadGroup API

3) "Java Threads", O'Reilly, Third Edition, September 2004, 360 pages. По "мощности" аналогична предидущей. Содержание:
Copyright 
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 
Section 1.1.  Java Terms 
Section 1.2.  About the Examples 
Section 1.3.  Why Threads? 
Section 1.4.  Summary 
Chapter 2.  Thread Creation and Management 
Section 2.1.  What Is a Thread? 
Section 2.2.  Creating a Thread 
Section 2.3.  The Lifecycle of a Thread 
Section 2.4.  Two Approaches to Stopping a Thread 
Section 2.5.  The Runnable Interface 
Section 2.6.  Threads and Objects 
Section 2.7.  Summary 
Chapter 3.  Data Synchronization 
Section 3.1.  The Synchronized Keyword 
Section 3.2.  The Volatile Keyword 
Section 3.3.  More on Race Conditions 
Section 3.4.  Explicit Locking 
Section 3.5.  Lock Scope 
Section 3.6.  Choosing a Locking Mechanism 
Section 3.7.  Nested Locks 
Section 3.8.  Deadlock 
Section 3.9.  Lock Fairness 
Section 3.10.  Summary 
Chapter 4.  Thread Notification 
Section 4.1.  Wait and Notify 
Section 4.2.  Condition Variables 
Section 4.3.  Summary 
Chapter 5.  Minimal Synchronization Techniques 
Section 5.1.  Can You Avoid Synchronization? 
Section 5.2.  Atomic Variables 
Section 5.3.  Thread Local Variables 
Section 5.4.  Summary 
Chapter 6.  Advanced Synchronization Topics 
Section 6.1.  Synchronization Terms 
Section 6.2.  Synchronization Classes Added in J2SE 5.0 
Section 6.3.  Preventing Deadlock 
Section 6.4.  Deadlock Detection 
Section 6.5.  Lock Starvation 
Section 6.6.  Summary 
Chapter 7.  Threads and Swing 
Section 7.1.  Swing Threading Restrictions 
Section 7.2.  Processing on the Event-Dispatching Thread 
Section 7.3.  Using invokeLater( ) and invokeAndWait( ) 
Section 7.4.  Long-Running Event Callbacks 
Section 7.5.  Summary 
Chapter 8.  Threads and Collection Classes 
Section 8.1.  Overview of Collection Classes 
Section 8.2.  Synchronization and Collection Classes 
Section 8.3.  The Producer/Consumer Pattern 
Section 8.4.  Using the Collection Classes 
Section 8.5.  Summary 
Chapter 9.  Thread Scheduling 
Section 9.1.  An Overview of Thread Scheduling 
Section 9.2.  Scheduling with Thread Priorities 
Section 9.3.  Popular Threading Implementations 
Section 9.4.  Summary 
Chapter 10.  Thread Pools 
Section 10.1.  Why Thread Pools? 
Section 10.2.  Executors 
Section 10.3.  Using a Thread Pool 
Section 10.4.  Queues and Sizes 
Section 10.5.  Thread Creation 
Section 10.6.  Callable Tasks and Future Results 
Section 10.7.  Single-Threaded Access 
Section 10.8.  Summary 
Chapter 11.  Task Scheduling 
Section 11.1.  Overview of Task Scheduling 
Section 11.2.  The java.util.Timer Class 
Section 11.3.  The javax.swing.Timer Class 
Section 11.4.  The ScheduledThreadPoolExecutor Class 
Section 11.5.  Summary 
Chapter 12.  Threads and I/O 
Section 12.1.  A Traditional I/O Server 
Section 12.2.  A New I/O Server 
Section 12.3.  Interrupted I/O 
Section 12.4.  Summary 
Chapter 13.  Miscellaneous Thread Topics 
Section 13.1.  Thread Groups 
Section 13.2.  Threads and Java Security 
Section 13.3.  Daemon Threads 
Section 13.4.  Threads and Class Loading 
Section 13.5.  Threads and Exception Handling 
Section 13.6.  Threads, Stacks, and Memory Usage 
Section 13.7.  Summary 
Chapter 14.  Thread Performance 
Section 14.1.  Overview of Performance 
Section 14.2.  Synchronized Collections 
Section 14.3.  Atomic Variables and Contended Synchronization 
Section 14.4.  Thread Creation and Thread Pools 
Section 14.5.  Summary 
Chapter 15.  Parallelizing Loops for Multiprocessor Machines 
Section 15.1.  Parallelizing a Single-Threaded Program 
Section 15.2.  Multiprocessor Scaling 
Section 15.3.  Summary 
Appendix A.  Superseded Threading Utilities 
Section A.1.  The BusyFlag Class 
Section A.2.  The CondVar Class 
Section A.3.  The Barrier Class 
Section A.4.  The RWLock Class 
Section A.5.  The ThreadPool Class 
Section A.6.  The JobScheduler Class 
Section A.7.  Summary 

1 комментарий:

  1. Почитал "Основы многопоточного, распределенного и параллельного программирования". Насторожил то факт, что автор введенным формальным языком доказывает семантическую работоспособность программ. Это во-первых. Во второых, как мне показалось, язык введен не совсем корректно: достаточно вспомнить определение оператора "if", где используется символ => (логического следования), хотя нигде значение этого символа не оговаривается и что хотел сказать автор не очень ясно. Если кто-нибудь разобрался с логическими построениями автора, разубедите меня. Потому что формальное доказательство работоспособности программы - грааль всех информатиков-теоретиков.

    ОтветитьУдалить