Ruby supports concurrency through threads but not true parallelism due to the Global Interpreter Lock (GIL). The GIL prevents more than one thread of Ruby code from running simultaneously. While threads cannot run in parallel, I/O-bound operations allow other threads to run by releasing the GIL. Newer implementations like JRuby and Rubinius as well as potential future changes to Ruby aim to improve support for true parallelism.