1) A thread is a flow of execution within a process that has its own program counter, registers, and stack. Threads allow for parallelism and improved performance over single-threaded processes.
2) Multithreaded processes allow multiple parts of a program to execute concurrently using multiple threads, whereas single-threaded processes execute instructions in a single sequence.
3) There are two main types of threads: user-level threads managed by a user-space thread library, and kernel-level threads directly supported by the operating system kernel. Kernel threads can take advantage of multiprocessors but have more overhead than user-level threads.