It's definitely possible and legal. If your Runnable has no state (no fields), then everything will be fine. If your Runnable does have mutable state, then you may need to use one of Java's many mutual exclusion mechanisms like ReentrantLock or the synchronized keyword. Because both Threads will be mutating the fields of the same Runnable object.
No, you created and ran two different Threads. They simply call Runnable.run().
It's not out of the realm of possibility. I wouldn't even say it's necessarily bad practice. Specific situations where you might do this left as an exercise to the reader...