-
Урок 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!