Confused, are languages like python, ruby single threaded? unlike say java? (for web apps)
A confused question with a lot of confused answers...
First, threading and concurrent execution are different things.  Python supports threads just fine; it doesn't support concurrent execution in any real-world implementation.  (In all serious implementations, only one VM thread can execute at a time; the many attempts to decouple VM threads have all failed.)
Second, this is irrelevant for web apps.  You don't need Python backends to execute concurrently in the same process.  You spawn separate processes for each backend, which can then each handle requests in parallel because they're not tied together at all.
Using threads for web backends is a bad idea.  Why introduce the perils of threading--locking, race conditions, deadlocks--to something inherently embarrassingly parallel?  It's much safer to tuck each backend away in its own isolated process, avoiding the potential for all of these problems.
(There are advantages to sharing memory space--it saves memory, by sharing static code--but that can be solved without threads.)
I was reading how Clojure is 'cool' because of its syntax + it runs on the JVM so it is multithreaded etc. etc.
Are languages like ruby and python single threaded in nature then? (when running as a web app).
What are the underlying differences between python/ruby and say java running on tomcat?
Doesn't the web server have a pool of threads to work with in all cases?