Show Sidebar
Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Ultimate Java Part 3: Advanced Topics
Getting Started
1- Introduction (1:11)
2- Source Code
3- Follow Me Around
4- Learning Paths
Bonus: Redeem Your FREE Access to IntelliJ
Exceptions (43m)
1- Introduction (0:42)
2- What are Exceptions (3:45)
3- Types of Exceptions (3:40)
4- Exceptions Hierarchy (2:05)
5- Catching Exceptions (3:51)
6- Catching Multiple Types of Exceptions (4:28)
7- The finally Block (4:10)
8- The try-with-resources Statement (2:26)
9- Throwing Exceptions (4:41)
10- Re-throwing Exceptions (3:07)
11- Custom Exceptions (4:18)
12- Chaining Exceptions (4:56)
13- Summary (0:56)
Generics (43m)
1- Introduction (0:27)
2- The Need for Generics (3:32)
3- A Poor Solution (3:22)
4- Generic Classes (4:27)
5- Generics and Primitive Types (2:24)
6- Constraints (3:25)
7- Type Erasure (4:04)
8- Comparable Interface (5:38)
9- Generic Methods (4:48)
10- Multiple Type Parameters (2:32)
11- Generic Classes and Inheritance (4:17)
12- Wildcards (5:27)
13- Summary (0:55)
Collections (1h)
1- Introduction (0:34)
2- Overview of Collections Framework (3:08)
3- The Need for Iterables (3:54)
4- The Iterable Interface (5:24)
5- The Iterator Interface (5:26)
6- The Collection Interface (9:35)
7- The List Interface (3:51)
8- The Comparable Interface (4:28)
9- The Comparator Interface (3:51)
10- The Queue Interface (4:47)
11- The Set Interface (5:33)
12- Hash Tables (3:44)
13- The Map Interface (6:26)
14- Summary (0:44)
Lambda Expressions and Functional Interfaces (44m)
1- Introduction (0:47)
2- Functional Interfaces (3:51)
3- Anonymous Inner Classes (1:23)
4- Lambda Expressions (3:43)
5- Variable Capture (1:56)
6- Method References (3:46)
7- Built-in Functional Interfaces (1:42)
8- The Consumer Interface (4:06)
9- Chaining Consumer (4:28)
10- The Supplier Interface (2:30)
11- The Function Interface (3:00)
12- Composing Functions (4:19)
13- The Predicate Interface (2:02)
14- Combining Predicates (2:10)
15- The BinaryOperator Interface (3:15)
16- The UnaryOperator Interface (1:13)
17- Summary (0:40)
Streams (1h)
1- Introduction (0:41)
2- Imperative vs Functional Programming (6:24)
3- Creating a Stream (5:01)
4- Mapping Elements (5:24)
5- Filtering Elements (2:59)
6- Slicing Streams (4:21)
7- Sorting Streams (5:13)
8- Getting Unique Elements (2:09)
9- Peeking Elements (3:19)
10- Simple Reducers (3:37)
11- Reducing a Stream (4:12)
12- Collectors (6:03)
13- Grouping Elements (4:51)
14- Partitioning Elements (2:10)
15- Primitive Type Streams (1:25)
16- Summary (0:39)
Concurrency and Multi-threading (1h)
1- Introduction (0:55)
2- Processes and Threads (3:07)
3- Starting a Thread (3:14)
4- Pausing a Thread (2:35)
5- Joining a Thread (2:27)
6- Interrupting a Thread (2:54)
7- Concurrency Issues (2:08)
8- Race Conditions (5:53)
9- Strategies for Thread Safety (2:50)
10- Confinement (3:40)
11- Locks (3:17)
12- The synchronized Keyword (5:13)
13- The volatile Keyword (6:33)
14- Thread Signalling with wait() and notify() (3:35)
15- Atomic Objects (3:25)
16- Adders (2:08)
17- Synchronized Collections (3:24)
18- Concurrent Collections (2:37)
19- Summary (1:18)
The Executive Framework (70m)
1- Introduction (0:38)
2- Thread Pools (1:46)
3- Executors (6:50)
4- Callables and Futures (5:00)
5- Asynchronous Programming (1:50)
6- Completable Futures (1:38)
7- Creating a Completable Future (3:42)
8- Implementing an Asynchronous API (4:18)
9- Running Code on Completion (4:04)
10- Handling Exceptions (4:15)
11- Transforming a Completable Future (4:34)
12- Composing Completable Futures (6:08)
13- Combining Completable Futures (4:32)
14- Waiting for Many Tasks to Complete (2:48)
15- Waiting for the First Task (2:13)
16- Handling timeouts (2:24)
17- Project- Best Price Finder (1:18)
18- Solution- Getting a Quote (4:15)
19- Solution- Getting Many Quotes (4:49)
20- Solution- Random Delays (4:27)
6- Catching Multiple Types of Exceptions
Download
Complete and Continue