One process can have multiple Threads,
Thread are subdivision of Process. One or more Threads runs in the context of process. Threads can execute any part of process. And same part of process can be executed by multiple Threads.
Processes have their own copy of the data segment of the parent process while Threads have direct access to the data segment of its process.
Processes have their own address while Threads share the address space of the process that created it.
Process creation needs whole lot of stuff to be done, we might need to copy whole parent process, but Thread can be easily created.
Processes can easily communicate with child processes but interprocess communication is difficult. While, Threads can easily communicate with other threads of the same process using wait() and notify() methods.
In process all threads share system resource like heap Memory etc. while Thread has its own stack.
Any change made to process does not affect child processes, but any change made to thread can affect the behavior of the other threads of the process.
/** JavaMadeSoEasy.com */
RELATED LINKS>
Thread basics >
What is thread in java
Thread states/ Thread life cycle in java
Difference between Process and Thread in java
Implementing Threads in java by implementing Runnable interface and extending Thread class
Threads implement their own stack - demonstration using program and diagram
Differences between implementing Runnable interface and extending Thread class
Thread behaviour is unpredictable
When threads are not lightweight process in java, in fact they become heavy weight process
Guidelines to threadsafe code >
Guidelines to thread safe code, most important point we must take care of in multithreading programs
Interviews >