A little History
In Apple's Operating System (versions 6 and below), it was only possible to run a single application at a time. Needless to say, this was a useless situation to be in, because even the Finder quit when a new application was opened.
SYSTEM 7
In any case, when Apple released System 7.1, it had changed its operating system enough so that two applications could actually interact with each other, allowing the user to use Finder (or rather, MultiFinder, the new version of the original), at the same time as, say, a game or a word processing document.
The way this was accomplished was to introduce the Thread Manager, which allowed each program to have multiple, "cooperative" threads, that is, a main thread and multiple others. Now the OS only had to switch between threads and not applications, and all these threads must cooperate for anything to happen.
The problem with the way the interaction problem was solved did, however, leave a few unfortunate artifacts in the operating system: it was near-impossible for a program to multi-task, and, more interestingly, if one thread did not want to cooperate, then no programs could do anything at all, and the system would "hang".
Another problem with this implementation is that multiple processor systems are not better than single processors, since, by definition, only one thread can run at any give time.
SYSTEM 8
System 8 introduced "preemptive multithreading," which was unfortunately something that had been around for quite sometime at that point.
The idea behind this solution is that scheduled threads don't know when other threads are running, allowing the OS to interrupt them if necessary. There are multiple benefits: threads don't have to worry about giving other threads' time, and threads dont have to cooperate.
However, cooperative threading just wouldn't die. It stayed in order to allow backward compatibility between systems. Multiple processors were still unable to be used to full effect.
MAC OS X
Every application runs in its own preemptive thread, meaning crashed apps do not affect the system. Classic still works the way it used to, but also has its own preeemptive thread. If two applications are running side-by-side, then, with 2 processors, they don't need to split processor time.
Bibliography
Parts of this were taken from here Thanks to the author.
