- Prevent singleton pattern from serialization in Java
- Object cloning in Java
- Comparator in Java
- Comparable in Java
- hashCode method in Java
- Rules of declaring package, import and class in source file
- Create, compile, run and understand Hello World program in Java
- Predefined annotation types in Java
- Packages in Java
- Java legal identifiers, keywords and code conventions
- Random number generation in Java
- What Is RandomAccess Interface?
- Features of Java
- Java – Try with Resources
- How HashMap Works Internally in Java
- How HashSet Works Internally in Java
- Hashing in Java
- Java Collection Framework – An Introduction
- Aggregation vs Composition in Java
- Class Loading in Java
- Java ClassLoaders
- XOR in Java
enum
- enum in Java
- enum in Java – constructor, methods and interface
- Java enum ordinal() method
- Iterating over Enum Values in Java
- Comparing enum members in Java
- What is EnumSet?
Inner Class
Annotation
- @Override annotation in Java
- @Deprecated annotation in Java
- Custom annotation in Java
- Annotations in Java – an introduction
Serialization
- Difference between Externalization and Serialization
- Externalization in Java
- Serialization with respect to inheritance
- Custom serialization in Java
- Object graph in Serialization
- Serialization of multiple objects in same file
- static transient field and final transient field
- transient keyword in Java and example
- Serialization and Deserialization example
- Serialization and Deserialization in Java
Collections
- HashSet in Java
- Dequeue in Java
- Stack in Java
- Generics in Java – An introduction
- PriorityQueue in Java
- PriorityBlockingQueue in Java
- How HashMap Internally Works in Java?
- How HashSet Internally Works in Java?
- Collection Hierarchy – Diagram
- java.util.Collections
- Java NavigableSet
- Java NavigableMap Tutorial
- Java EnumSet
- Java EnumMap Tutorial
- Java WeakHashMap
- Java IdentityHashMap
- Java Collections.singleton() and Collections.emptySet() Tutorial
Multithreading
- What is Thread in Java?
- synchronized in Java
- How to create and run a thread in Java
- Race condition in Java with examples
- Thread.join() method in Java with examples
- Java Thread Life Cycle and Thread States
- Thread priority and yield method
- Fork/Join framework in Java
- CyclicBarrier in Java
- CountDownLatch in Java
- Semaphore in Java
- BlockingQueue in Java
- Executor framework in Java – an introduction
- Thread interruption in Java
- An introduction to ThreadLocal in Java
- volatile keyword in Java
- ConcurrentHashMap in Java
- CopyOnWriteArrayList in Java
- Daemon Threads in Java
- Comparison of newCachedThreadPool() vs newFixedThreadPool()
- Synchronized Block vs Synchronized Method
- Fair vs Non-Fair Locks in Java
- ScheduledThreadPoolExecutor in Java
- How Does Java Handle False Sharing in Concurrency?
- Difference Between volatile and AtomicReference in Java
- Why is CompletableFuture Preferred Over Plain Threads in Microservices?
- Future in Java
- CompletableFuture in Java
- What’s the difference between submit() and execute() in ExecutorService?
- Why might CompletableFuture.get() be dangerous in production?
- How do you choose thread pool sizes?
Java 8
- Spliterator in Java
- Sort a stream in Java
- How to convert Array to Stream?
- Java 8 StringJoiner
- Java LocalDateTime class with examples
- Java LocalTime class with examples
- LocalDate class in Java with examples
- java.time package in Java 8 – Introduction
- Stream forEachOrdered method in Java with example
- Java 8 forEach with examples
- Java 8 Collectors
- Stream flatMap() in Java with examples
- Java 8 stream map() and example
- Java 8 filter() with examples
- Java Stream generate() method with example
- How to create stream in Java 8
- Java 8 Stream – An Introduction
- Method references in Java
- Primitive type functional interfaces
- BiConsumer interface in Java
- BiFunction interface in Java
- BiPredicate interface in Java
- Supplier interface in Java
- Consumer interface in Java
- Function interface in Java 8
- Java 8 Optional
- Java 8 Predicate with example
- main method inside interface
- static methods in interface
- Difference between interface with default method and abstract class or Java 8 interface vs abstract class
- default methods in interface in case of multiple inheritance
- default method in interface – Java 8
- Local variables referenced from a lambda expression must be final or effectively final
- Difference between anonymous inner class and lambda expression
- Java 8 Runnable example using Lambda expression
- How to write and use a lambda expression in Java 8?
- Java Functional Interface
- Java 8 Lambdas – an introduction
- Stream peek() Method in Java
- Concurrency vs Parallelism
- Parallel streams in Java
- Stream.reduce() in Java
- Collectors partitioningBy() method in Java
- Handling time zones in distributed systems
- Collectors.groupingBy
Java 9
Java 9 – New Features
Java 9 – Enhancements
JPMS
Java 10 and above
- Generations and generational garbage collection in Java
- Selecting a garbage collector for application in Java
- Maximum pause-time and throughput garbage collection in Java
- Garbage collection in Java and types of garbage collectors
- Java 10 Local Variable Type Inference
- Optional.orElseThrow()
- Create unmodifiable copy using copyOf method
- Class Data sharing
- Improved Docker Container Integration with Java 10
- HttpClient in Java 11
- String repeat method
- Java isBlank() method
- String lines() method in Java
- Local-Variable Syntax for Lambda Parameters
- String strip() method in Java
- Epsilon: A No-Op Garbage Collector
- The Z Garbage Collector
- How G1 Garbage Collector (G1GC) Works
- Java 11 Single-File Source-Code Programs
- Java 11 Files.readString() and Files.writeString() methods
- Java Predicate.not() method
- Java Flight Recorder
- Compact Number Formatting in Java
- Java Teeing Collectors
- Comparing file with Files.mismatch() method in Java
- Preview feature in Java
- Text Blocks in Java
- Sealed classes in Java
- Record classes in Java
- Java switch expressions
- Virtual threads in Java – An Introduction
- Java carrier thread example
- Why use Virtual Threads?