A feature within a CPU that allows two or more instruction streams (threads) to execute concurrently. Each stream is a "subprocess" that is managed by the CPU and operating system. Today's CPUs support a large number of threads. For example, IBM's POWER8 CPU comes with up to 12 cores, and each core handles eight threads for a total of 96 threads. Operating systems are written to use multithreading wherever possible; however, applications can also be written to take advantage of this parallel processing. If the application is very complex, the effort can be formidable even for experienced programmers. See SMP, re-entrant code, multicore, multiprocessing and hyperthreading.