In a single core CPU (without hyperthreading) there will only be one thread actually executing, yes. However, that doesn't totally preclude parallel processing. For instance, you could have three tasks to achieve:
- One which is doing a lot of network activity
- One which is doing a lot of disk activity
- One which is doing a lot of CPU activity
Running these three in parallel using threads could certainly give a performance improvement even on a single core machine. The heavy-CPU activity will have to wait when one of the other activities has some more data to process, but the overall effect is parallel processing. This is basically because "other things" can be happening (the disk head moving, a web service performing some work on a remote machine) without taking CPU.