• Урок 1. 00:05:07
    How the course came about
  • Урок 2. 00:11:18
    Questions and exercises
  • Урок 3. 00:04:09
    History of concurrency
  • Урок 4. 00:09:47
    Benefits of threads
  • Урок 5. 00:08:20
    Risks of threads
  • Урок 6. 00:03:59
    Threads are everywhere
  • Урок 7. 00:23:16
    Short Java 7 & 8 primer
  • Урок 8. 00:04:55
    Exercises
  • Урок 9. 00:05:28
    Exercise Walkthrough: Setting up your IDE
  • Урок 10. 00:04:12
    Exercise Walkthrough: Annotating Persons
  • Урок 11. 00:09:59
    Stack vs heap memory
  • Урок 12. 00:05:26
    Synchronization, Latent defects
  • Урок 13. 00:09:06
    Atomicity
  • Урок 14. 00:08:38
    Visibility
  • Урок 15. 00:07:38
    Confinement
  • Урок 16. 00:15:55
    Immutability
  • Урок 17. 00:08:49
    Designing a thread-safe class
  • Урок 18. 00:04:20
    Exercises
  • Урок 19. 00:04:11
    Exercise Walkthrough: Thread confined DateFormat
  • Урок 20. 00:02:11
    Exercise Walkthrough: Stack confined DateFormat
  • Урок 21. 00:01:32
    Exercise Walkthrough: Object confined DateFormat
  • Урок 22. 00:02:47
    Exercise Walkthrough: New DateTimeFormatter
  • Урок 23. 00:05:33
    Exercise Walkthrough: ByteGenerator
  • Урок 24. 00:13:07
    Synchronized collections
  • Урок 25. 00:08:39
    Concurrent collections
  • Урок 26. 00:10:07
    Livelock with ConcurrentHashMap.computeIfAbsent()
  • Урок 27. 00:10:46
    CopyOnWrite collections
  • Урок 28. 00:15:58
    BlockingQueue & producer-consumer
  • Урок 29. 00:05:24
    Semaphore
  • Урок 30. 00:04:42
    CountDownLatch
  • Урок 31. 00:07:46
    Phaser
  • Урок 32. 00:02:27
    Exercises
  • Урок 33. 00:19:58
    Exercise Walkthrough: ConcurrentModificationException
  • Урок 34. 00:12:37
    Exercise Walkthrough: PriorityBlockingQueue
  • Урок 35. 00:04:37
    Introduction
  • Урок 36. 00:08:45
    The executor framework
  • Урок 37. 00:07:23
    ScheduledExecutorService
  • Урок 38. 00:06:33
    Executor lifecycle
  • Урок 39. 00:07:21
    Finding exploitable parallelism
  • Урок 40. 00:06:03
    Callable and Future
  • Урок 41. 00:06:51
    CompletionService
  • Урок 42. 00:15:54
    CompletableFuture
  • Урок 43. 00:06:35
    Using parallel streams
  • Урок 44. 00:01:45
    Exercises
  • Урок 45. 00:09:42
    Exercise Walkthrough: Parallel factorizer
  • Урок 46. 00:04:28
    Exercise Walkthrough: Parallel stream factorizer
  • Урок 47. 00:11:26
    Introduction & Motivation
  • Урок 48. 00:05:06
    Cooperative vs preemptive
  • Урок 49. 00:13:56
    Policies in dealing with InterruptedException
  • Урок 50. 00:11:56
    Code sample with Future.cancel(true)
  • Урок 51. 00:07:10
    FutureTask life cycle & Java 8 streams
  • Урок 52. 00:07:18
    Timed tasks & non-interruptible tasks
  • Урок 53. 00:00:58
    Exercises
  • Урок 54. 00:07:36
    Exercise Walkthrough: Make the factorizer cancelable
  • Урок 55. 00:12:40
    Sizing thread pools, compute vs IO tasks
  • Урок 56. 00:03:36
    Mixing CPU and IO intensive tasks
  • Урок 57. 00:24:00
    Thread creation cost amortization
  • Урок 58. 00:06:48
    Fixed vs cached thread pool configurations
  • Урок 59. 00:06:48
    Saturation policies & thread factories
  • Урок 60. 00:03:04
    Exercises
  • Урок 61. 00:05:51
    Exercise Walkthrough: ThreadPoolSupplier
  • Урок 62. 00:06:17
    Exercise Walkthrough: Thread Pool MBean
  • Урок 63. 00:04:08
    Exercise Walkthrough: Sizing ThreadPoolExecutor
  • Урок 64. 00:03:56
    Introduction
  • Урок 65. 00:06:17
    ForkJoinPool and ForkJoinTask
  • Урок 66. 00:13:16
    Parallelizing Fibonacci with Fork:Join
  • Урок 67. 00:17:05
    ManagedBlocker
  • Урок 68. 00:04:27
    Canceling a task and summary
  • Урок 69. 00:07:27
    Exercises
  • Урок 70. 00:14:54
    Exercise Walkthrough: Puzzle solver with ForkJoin
  • Урок 71. 00:13:12
    Exercise Walkthrough: Streams instead of ForkJoin
  • Урок 72. 00:02:33
    Introduction
  • Урок 73. 00:10:16
    Deadlocks
  • Урок 74. 00:09:52
    Lock ordering with System.identityHashCode()
  • Урок 75. 00:07:02
    Benefits of open calls
  • Урок 76. 00:08:12
    Deadlock in java.util.Vector
  • Урок 77. 00:18:22
    Avoiding and diagnosing deadlocks
  • Урок 78. 00:07:37
    Livelocks
  • Урок 79. 00:04:16
    Exercises
  • Урок 80. 00:03:47
    Exercise Walkthrough: Solve deadlocks via lock ordering
  • Урок 81. 00:11:17
    Exercise Walkthrough: Find and eliminate deadlock
  • Урок 82. 00:03:22
    Exercise Walkthrough: Bonus deadlock puzzle
  • Урок 83. 00:06:56
    Introduction
  • Урок 84. 00:07:23
    Automatic tooling
  • Урок 85. 00:13:15
    Bulk updates
  • Урок 86. 00:04:02
    Repairing the race condition
  • Урок 87. 00:05:44
    Testing for performance
  • Урок 88. 00:03:54
    Exercises
  • Урок 89. 00:15:44
    Exercise Walkthrough: HandoverQueue test
  • Урок 90. 00:07:19
    Exercise Walkthrough: LinkedTransferQueue test
  • Урок 91. 00:07:13
    Introduction
  • Урок 92. 00:09:14
    Amdahl's & Little's laws
  • Урок 93. 00:12:47
    Costs introduced by context switching
  • Урок 94. 00:06:22
    Reducing lock contention
  • Урок 95. 00:06:33
    Lock splitting & lock striping
  • Урок 96. 00:07:24
    Monitoring CPU utilization to spot contention
  • Урок 97. 00:00:57
    Introduction
  • Урок 98. 00:08:06
    AutoCloseable locks
  • Урок 99. 00:03:15
    Avoiding deadlocks using tryLock()
  • Урок 100. 00:03:34
    Performance synchronized vs ReentrantLock
  • Урок 101. 00:05:23
    When to use ReentrantLock
  • Урок 102. 00:06:07
    ReentrantReadWriteLock
  • Урок 103. 00:13:58
    StampedLock from Java 8
  • Урок 104. 00:02:34
    Exercises
  • Урок 105. 00:07:59
    Exercise Walkthrough: Better WalkingCollection
  • Урок 106. 00:05:58
    Exercise Walkthrough: tryLock() for solving deadlocks
  • Урок 107. 00:22:25
    Exercise Walkthrough: StampedLock with IntList
  • Урок 108. 00:03:16
    Introduction
  • Урок 109. 00:10:38
    Managing state dependence
  • Урок 110. 00:12:21
    Using condition queues
  • Урок 111. 00:08:56
    Explicit condition objects
  • Урок 112. 00:01:31
    Exercises
  • Урок 113. 00:17:31
    Exercise Walkthrough: FutureResultIterable
  • Урок 114. 00:09:28
    Introduction
  • Урок 115. 00:23:46
    CompareAndSwap & VarHandles
  • Урок 116. 00:20:01
    Shared cache lines & sun.misc.Contended
  • Урок 117. 00:06:42
    Atomic variable classes
  • Урок 118. 00:06:05
    Nonblocking algorithms
  • Урок 119. 00:04:16
    Exercises
  • Урок 120. 00:08:36
    Exercise Walkthrough: Make an atomic BankAccount
  • Урок 121. 00:04:27
    Introduction
  • Урок 122. 00:11:09
    Garbage collection
  • Урок 123. 00:06:39
    Throughput collector
  • Урок 124. 00:15:39
    -XX:+PrintFlagsFinal
  • Урок 125. 00:05:50
    ConcurrentMarkSweep
  • Урок 126. 00:08:31
    G1
  • Урок 127. 00:18:45
    Heap sizing
  • Урок 128. 00:01:57
    Exercises
  • Урок 129. 00:10:17
    Exercise Walkthrough: Tune different garbage collectors
  • Урок 130. 00:02:30
    Introduction
  • Урок 131. 00:16:41
    SoftReference
  • Урок 132. 00:31:54
    WeakReference
  • Урок 133. 00:12:17
    PhantomReference
  • Урок 134. 00:02:08
    Exercises
  • Урок 135. 00:03:23
    Exercise Walkthrough: FailFastCollection with WeakReferences
  • Урок 136. 00:01:36
    Introduction
  • Урок 137. 00:12:15
    Big gains quickly
  • Урок 138. 00:04:40
    The Box
  • Урок 139. 00:02:55
    Consumers of CPU
  • Урок 140. 00:07:12
    Microbenchmarking
  • Урок 141. 00:02:45
    Exercises
  • Урок 142. 00:16:13
    Exercise Walkthrough: Microbenchmark example
  • Урок 143. 00:12:24
    Just-in-time compiler
  • Урок 144. 00:08:29
    Hotspot and tiered compilation
  • Урок 145. 00:05:24
    Exercises
  • Урок 146. 00:07:37
    Exercise Walkthrough: Compare JIT settings
  • Урок 147. 00:03:12
    Exercise Walkthrough: Profiling with JVisualVM
  • Урок 148. 00:01:23
    Introduction
  • Урок 149. 00:05:13
    Object creation
  • Урок 150. 00:37:50
    Strings
  • Урок 151. 00:02:54
    Regular expressions & exceptions
  • Урок 152. 00:12:42
    Faster loops & other tricks
  • Урок 153. 00:01:33
    Exercises
  • Урок 154. 00:20:30
    Exercise Walkthrough: Make a fast Validator
  • Урок 155. 00:08:48
    That's it, folks!
Этот материал находится в платной подписке. Оформи премиум подписку и смотри Extreme Java - Concurrency Performance, а также все другие курсы, прямо сейчас!
Премиум