| Topic | Sub-Topics |
| JVM Architecture & Garbage Collection | Java Virtual Machine Architecture |
| Class Loading | |
| Linking | |
| Reflection | |
| Runtime Data Areas | |
| Method Area & Heap | |
| Method Table | |
| Garbage Collection: Introduction | |
| Garbage Collection Algorithms | |
| GC: Generational Collections | |
| Demo: Tuning Heap & Analyzing GC Cycles | |
| gc() and finalise() methods | |
| Mark and Sweep | |
| Detecting soft leaks | |
| Permgen and Metaspace | |
| Heap Size | |
| Permgen Size | |
| Garbage Collection and Generation sizes | |
| Generating Heap Dumps | |
| Choosing a garbage collector | |
| Memory Leak Example | |
| OOPs | Class & Objects |
| Variables: Primitive Types | |
| Variables: Type Casting | |
| Autoboxing | |
| Encapsulation – Access Specifiers | |
| Inheritance | Diamond Problem |
| Final Keyword | |
| Polymorphism | Compile Time Polymorphism |
| Runtime Polymorphism | |
| Abstraction | Abstract Class |
| Interfaces | |
| Marker Interface | |
| Functional Interface | |
| default and static methods in Interfaces | |
| Arrays | Linear Array |
| 2D Array | |
| String | String |
| String Pool | |
| StringBuilder | |
| StringBuffer | |
| Exceptions | Checked & Unchecked Exceptions |
| Throws | |
| Throw | |
| Finally | |
| try-with-resources | |
| Suppressed Exceptions | |
| How to Create Custom Exception for your Project | |
| Collections | Collection Interface |
| List Interface | |
| ArrayList | |
| LinkedList | |
| Dequeues | |
| Iterator | |
| ArrayDeque | |
| Hash Table | |
| LinkedHashSet | |
| Set Interface & HashSet + Demo + Overriding hashCode & Equals | |
| SortedSet & NavigableSet | |
| TreeSet (Comparable & Comparator) | |
| Exploring NavigableSet Methods | |
| LinkedHashMap | |
| SortedMap, NavigableMap and TreeMap | |
| Concurrent Collections | |
| Synchronized Collections | |
| Latch | |
| Cyclic barrier | |
| Blocking queue | |
| Delay queue | |
| Priority queue | |
| Concurrent maps | |
| Exchanger | |
| Generics | Generic & Parameterized Types |
| Generic Methods & Generic Constructors | |
| Generics Restrictions | |
| Enum Class | |
| enums with State & Behavior | |
| Concurrency & Multithreading | Multithreading Theory |
| Processes and threads introduction | |
| Starting threads I – Runnable | |
| Starting threads II – Thread class | |
| Launching Threads and Making them to Sleep! | |
| What is time-slicing algorithm? | |
| Benefits of multithreading | |
| Downside of multithreading | |
| Thread life cycle in Java | |
| Thread Naming, Prioritization and Joining | |
| Race Condition | |
| Join | |
| Java Memory Model (JMM) | |
| Volatile Variables + Demo | |
| Atomic Variables + Demo | |
| Volatile | |
| Producer and consumer | |
| Locks | |
| Producer consumer with locks | |
| Thread Cooperation & Management | |
| Sleep,Wait,Notify | |
| Thread Interruption | |
| Explicit Locks (Reentrant Lock) | |
| Executor Framework | |
| Executor Service & Future | |
| Asynchronous Programming | Callable and future |
| Deadlock | |
| Synchronized I | |
| Synchronized blocks | |
| Synchronization Best Practices | |
| Synchronization + Demo : Synchronize access to shared mutable data | |
| Locks VS synchronization | |
| Semaphores | |
| Streams | Functional-style Programming: |
| Lambda Functions | |
| Functional Interfaces | |
| Streams | |
| Demo: Slicing a Stream | |
| Demo: Stream Matching Operations | |
| Demo: Stream Finding Operations & Optional Class | |
| Stream Reduction Operations + Demo | |
| Mutable Reduction with Collection Operations + Demo | |
| collect() with Collector | |
| Demo: Collecting Stream into List & Set | |
| Optional Class | |
| Classic Problems | Dining Philosopher Problem |
| Students Library Simulation | |
| Miner Game Simulation | |
| Parallel Algorithms | |
| Parallel methods versus multithreading | |
| Merge sort | |
| Sequential merge sort | |
| Parallel merge sort | |
| Comparing sorting implementations | |
| Sum problem introduction | |
| Sum problem – sequential approach | |
| Sum problem – parallel implementation | |
| Comparing sum implementations | |
| Fork-Join Framework | |
| Fork-join framework introduction | |
| Fork-join framework simple example – RecursiveAction | |
| Fork-join framework simple example – RecursiveTask<T> | |
| Maximum finding – the algorithm | |
| Maximum finding – running the application | |
| Fork-join merge sort I | |
| –MapReduce and Parallelization | |
| MapReduce introduction – basics | |
| MapReduce introduction – example | |
| MapReduce and Fork-Join |
Home Core Java – All Topics
