Every mobile app balances the same trade-off: work done on the UI thread blocks the next frame, while work handed to a background thread pool runs in parallel without ever touching the screen. This simulator generates a stream of tasks with a configurable cost and spawn rate, lets you route them to either a single main (UI) thread lane or a resizable worker pool, and renders both as real 3D lanes where queued tasks wait, glide to the front, and pulse while executing. A spinning app-icon freezes exactly when the main thread is busy — visualizing "jank" — while live readouts track simulated frame rate, cumulative dropped frames, pool utilization and queue depth, following the same 16.67 ms frame-budget arithmetic that GCD dispatch queues, Android Executors and Kotlin coroutine dispatchers are built around.