# Important Concepts: Threads

Java programs are made up of threads. A thread is an independent sequence of executions within a program. When a Java program runs, several threads may be running at once, performing different actions. This type of program is known as a multithreaded program.

Every thread belongs to a thread group. A thread group is simply a logical grouping of related threads.

The `main` thread group is part of every program. Anytime you use the keyboard, Java WorkShop interacts with the threads in the `main` thread group.

When a thread is stopped, you can view the call stack that makes up the thread. You can view the call stack of a running thread, but the information you see is only as current as the last snapshot of the thread.

The call stack includes all methods that have been called, but have not returned to the caller. A method is similar to a procedure or function. The methods in the call stack are listed in the order that they were called. The method that was executing when the program stopped is at the top of the stack.

Next lesson:

  Exercise 1: Starting a Debugging Session