This lesson from the Modern Embedded Systems Programming course explores how active objects and state machines can be used in real-time programming with a preemptive RTOS. Starting from a lesson 27 project using the QXK kernel with traditional blocking threads, the instructor converts Blinky1 and Blinky2 threads into active objects using the QPC framework. Key findings include: active objects running as 'basic threads' (run-to-completion) can share a single stack, saving RAM compared to traditional threads; under a preemptive kernel like QXK, run-to-completion steps can still be preempted, allowing active objects to meet hard real-time deadlines; and active objects are compatible with Rate Monotonic Scheduling (RMS/RMA), making them as suitable as traditional threads for hard real-time systems — and potentially more so due to their non-shared-resource, asynchronous event model.