This chapter introduces multithreaded programming, which is the division of a program into multiple threads that execute concurrently. It describes four software models that can be used as a basis for constructing multithreaded programming programs and applications. The chapter also introduces concepts and techniques that are defined in more detail in Chapter 2.