Threads run inside of a process. They are easier to create than processes, and thus have a lower overhead.
Thread switching has a much lower overhead than context switching, threads are able to share resources, they allow individual processes to take advantage of a multicore architecture, and allow continued execution when other parts of the process are blocked.