Public Sector

We've had the pleasure of working with UK and overseas central and local government departments, including Healthcare (NHS and Foundation Trusts), Defence, Education (Universities and colleges), many of the main Civil Service departments, Emergency Services; also public-owned corporations including the BBC, Bank of England, Ordnance Survey, and regulatory bodies such as Ofgem.

We are registered on Crown Commercial Service’s (CCS) Dynamic Purchasing System (RM6219 Training and Learning) and also with numerous tender portals such as Ariba, Coupa and Delta E-Sourcing.

Read more...

Graduate Training Schemes

Framework Training has a strong track record of providing a solid introduction into the working world for technical graduates across myriad industries. We provide the opportunity to learn and gain valuable hands-on experience in a supportive, friendly and sociable training environment.

Attract & retain the brightest new starters

We know it is vital for our clients to invest in the future of their talented grads; not only to provide them with high-quality, professional training essential for their roles, but to embed them within the organisation’s culture and guide them on the right path to a successful career.

After all, your new hires could well be the next leaders and their creative ideas and unique insights are invaluable to your business.

Read more ...

Learning & Development

Our unique portfolio of high-quality technical courses and training programmes are industry-respected. They’re carefully designed so that delegates can seamlessly apply what they’ve learnt back in the workplace. Our team of domain experts, trainers, and support teams know our field — and all things tech — inside out, and we work hard to keep ourselves up to speed with the latest innovations. 

We’re proud to develop and deliver innovative learning solutions that actually work and make a tangible difference to your people and your business, driving through positive lasting change. Our training courses and programmes are human-centred. Everything we do is underpinned by our commitment to continuous improvement and learning and generally making things much better.

Read more...

Corporate & Volume Pricing

Whether you are looking to book multiple places on public scheduled courses (attended remotely or in our training centres in London) or planning private courses for a team within your organisation, we will be happy to discuss preferential pricing which maximise your staff education budget.

Enquire today about:

  • Training programme pricing models  

  • Multi-course voucher schemes

Read more...

Custom Learning Paths

We understand that your team training needs don't always fit into a "one size fits all" mould, and we're very happy to explore ways in which we can tailor a bespoke learning path to fit your learning needs.

Find out about how we can customise everything from short overviews, intensive workshops, and wider training programmes that give you coverage of the most relevant topics based on what your staff need to excel in their roles.

Read more...

High-Performance Java: Concurrency & Reactive Techniques

Achieve extreme Java scalability with Virtual Threads and Reactive Streams.

About the course

Building Java applications that are truly high-performance, responsive, and scalable is more crucial than ever. Traditional approaches to concurrency can be complex, error-prone, and limit throughput.

This course, "High-Performance Java: Concurrency & Reactive Techniques," is designed to equip you with the essential skills and knowledge to overcome these challenges using the power of modern Java.

Dive deep into the core concepts of concurrent programming in Java, from fundamental threading and synchronization to the advanced utilities in java.util.concurrent. Crucially, you will master Project Loom and Virtual Threads, a revolutionary feature that simplifies writing highly scalable concurrent code.

Beyond traditional concurrency, explore the world of Reactive Programming using the Java Flow API and popular libraries like RxJava. Learn how to design and implement systems that handle asynchronous data streams efficiently, improving responsiveness and resource utilization.

By blending foundational principles with the latest advancements like Virtual Threads and Reactive Streams, this course empowers you to write cleaner, more efficient, and massively scalable Java applications. Join us to unlock the full concurrent potential of the Java platform!

Instructor-led online and in-house face-to-face options are available - as part of a wider customised training programme, or as a standalone workshop, on-site at your offices or at one of many flexible meeting spaces in the UK and around the World.

    • Apply core Java threading and synchronisation mechanisms effectively.
    • Utilise advanced java.util.concurrent utilities for sophisticated concurrency control.
    • Design and implement asynchronous tasks using modern CompletableFutures.
    • Leverage Project Loom and Virtual Threads to write highly scalable concurrent applications with simpler code.
    • Understand and apply the principles of Reactive Programming.
    • Implement reactive systems using the standard Java Flow API.
    • Effectively use reactive libraries like RxJava (or Project Reactor) with operators and schedulers to manage asynchronous data streams.
    • Apply Java 9+ Process API features for external process management.
    • Build more responsive, efficient and scalable high-performance Java applications.
  • This course is ideal for seasoned Developers (who have experience implementing the fundamentals of Java) who are looking to significantly enhance their skills in building high-performance, responsive, and scalable applications. It is particularly relevant for those who need to:

    • Improve the efficiency and throughput of existing Java applications.

    • Develop new systems capable of handling high volumes of concurrent operations.

    • Understand and apply modern asynchronous and reactive programming patterns.

    • Stay current with the latest features in Java concurrency, including Project Loom and the Flow API.

    • Gain practical experience with popular reactive libraries like RxJava or Project Reactor.

    If you are a developer aiming to write more robust, faster, and more scalable Java code, this course is for you.

  • This advanced Java course is ideal for:

    • Experienced Java Developers: Looking to deepen their understanding of concurrent programming and build highly performant, scalable, and responsive applications.

    • Backend Developers: Working on high-throughput systems, microservices, or real-time applications where efficient resource utilisation and responsiveness are critical.

    • Architects & Technical Leads: Designing complex Java systems that require robust concurrency models and asynchronous processing capabilities.

    • DevOps Engineers: Seeking to understand the underlying concurrency mechanisms of Java applications for better monitoring and troubleshooting.

    • Anyone aiming to master modern Java concurrency patterns, including the latest features like Virtual Threads and Reactive Programming.

  • This Java Concurrency & Reactive Techniques course is available for private / custom delivery for your team - as an in-house face-to-face workshop at your location of choice, or as online instructor-led training via MS Teams (or your own preferred platform).

    Get in touch to find out how we can deliver tailored training which focuses on your project requirements and learning goals.

  • Threads & Thread Synchronisation

    • Traditional Threads (Revisiting java.lang.Thread)

    • Thread Lifecycle

    • Synchronisation Mechanisms (synchronised keyword, wait(), notify(), notifyAll())

    • Volatile Keyword

    Concurrency with java.util.concurrent

    • Executors and Thread Pools (ExecutorService, ThreadPoolExecutor, ScheduledExecutorService)

    • Callable and Future

    • Concurrency Control Mechanisms

      • Locks (ReentrantLock, ReadWriteLock)

      • Atomic Variables (AtomicInteger, AtomicLong, etc.)

      • Concurrent Collections (ConcurrentHashMap, CopyOnWriteArrayList, etc.)

    Controlling Concurrency with java.util.concurrent Primitives

    • Conditions

    • Semaphores

    • CountDownLatch

    • CyclicBarrier

    • Exchanger

    Asynchronous Programming with Futures and CompletableFutures

    • Background on Futures in Java

    • CompletableFutures in Java 8+

    • Creating and Completing CompletableFutures

    • Working with a Completable Future

    • Acting on Completion (thenApply, thenAccept, thenRun)

    • Combining Operations (thenCompose, thenCombine)

    • Composing CompletableFutures

    • Combining CompletableFutures

    • Waiting for CompletableFutures

    • Error Handling (exceptionally, handle)

    • CompletableFuture Timeouts and Delays

    Java 9+ Process API Updates

    • Process updates in Java 9

    • Obtaining the PID

    • Process Handle

    • Obtaining Information on a Process

    • Accessing all Processes

    • Process onExit Handle  

    Project Loom: Virtual Threads (Java 21+)

    • Introduction to Project Loom

    • Understanding the need for Virtual Threads

    • Platform Threads vs. Virtual Threads

    • Creating and Managing Virtual Threads (Thread.ofVirtual())

    • Structured Concurrency (Introduction to StructuredTaskScope - if applicable and stable in target Java version)

    • Benefits of Virtual Threads for concurrency and throughput

    • Migration strategies for existing code

    Reactive Programming Principles and Java Flow (Java 9+)

    • Introduction to Reactive Programming Concepts

    • The Reactive Manifesto

    • Understanding Asynchronous Data Streams

    • Backpressure

    Java 9 Flow API (java.util.concurrent.Flow)

    • Flow API Overview

    • Publishers

    • Subscribers

    • Subscriptions

    • Processors

    • Implementing Custom Publishers and Subscribers

    • Bridging with other Reactive Libraries

    Introduction to Reactive Libraries

    • This module provides in-depth coverage of a leading reactive programming library in the Java ecosystem. You are invited to select either Option #1 (Project Reactor) or Option #2 (RxJava) based on your project needs or interests - for instance, Reactor is popular with Spring Boot adopters.

    Option 1: Project Reactor

    • Introduction to Reactive Programming Concepts.

    • What is Project Reactor? Flux vs Mono.

    • Reactive Streams Specification and Reactor.

    • Creating Reactive Sequences (Flux and Mono).

    • Subscribing to Sequences and Handling Signals (onNext, onError, onComplete).

    • Understanding Subscription and Backpressure.

    • Key Transformation Operators (map, flatMap, concatMap).

    • Filtering and Utility Operators (filter, doOn...).

    • Combining Operators (merge, concat, zip).

    • Error Handling Strategies (onErrorReturn, onErrorResume, retry).

    • Introduction to Schedulers and Concurrency Management.

    • Controlling Execution Context (publishOn, subscribeOn).

    • Backpressure Management Strategies in Reactor.

    • Hot vs Cold Reactive Sequences (and Reactor types like ConnectableFlux).

    • Testing Reactive Flows with StepVerifier.

    Option 2: RxJava

    • Setting up RxJava

    • RxJava core concepts (Observables, Observers/Subscribers, Single, Maybe, Completable)

    • Creating Observables

    • Subscribing to Observables

    • OnNext, OnError and OnCompleted

    • Operators (Transformation, Filtering, Combination, etc.)

    • Pipes, Observable Operators and transformers

    • Connectable Observables

    • Subjects

    • Hot and Cold Observables

    • Back Pressure options in RxJava  

    • Schedulers (Concurrency Management in Reactive Streams)

    • Integrating Flow API with Reactive Libraries

Trusted by

OVO Energy company logo CAPITA company logo

Public Courses Dates and Rates

Please get in touch for pricing and availability.

Related courses