1) Is is possible to have a thread be able to run only one instance of itself? For instance, if I attach a gesture recognizer to a view that responds when the user taps the screen, and in the delegate method a thread is run that does some animation, if the user taps the screen again (while the initial animation is running), the initial thread gets canceled and basically run again from the beginning? (ie there can’t be two versions of the thread I implement running)
2) Is it possible to have one thread cancel another thread or to stop a thread from anywhere in the program?
To answer both of your questions refer to http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsthread_Class/Reference/Reference.html
If you want to manually manage threads you have instance methods for NSThread class like cancel, isCancelled, setThreadPriority which maybe useful.
There are many articles explaining why Threads are considered evil. Consider using GCD mechanism instead.
Refer Concurrency Programming Guide