Chapter 3: Processes A process is a program in execution
Threads in distributed systems are particularly useful to continue using the CPU when a blocking I/O operation is performed.
Threads share code and data, processes do not [Threads and Runnable????]
Concurrent programming (process/thread executing in parallel, syncronization can be a challenge)
* Servers can either be iterative (one server at a time) or concurrent ( multiple request in parallel) and stateless or stateful(maintains information on the state of its clients).
* An object adapter is a component that implements exactly one invocation policy.
* Migration of code between different machines ( reason is to move processes to lightly load machines).
* A software agent is capable of cooperation with other agents.
Monitor(oversee) - synchronized gives you mutual exclusion (used in shared memory communication, MULTIPROCESSOR SEE CHAPTER 1)
wait - is called when a condition is not met - continues when another thread is doing "notify" or "notify all"
There is one waiting list for each synchronized object (not the same as the queue where the threads are waiting for the lock)
notify - one thread will be taken out of the waiting list
ONLY ONE THREAD AT A TIME CAN OWN AN OBJECT`S MONITOR