进程:每一个程序都在单独的进程中运行
线程:线程允许在同一个进程中同时存在多个控制流,会共享进程范围内的资源,是基本的调度单位
线程的优势?
- 发挥多处理器的强大能力
- 建模的简单性:执行同一种类型的任务,如Servlet
- 异步事件的简单化处理,如异步I/O
- 响应更灵敏的用户界面,如将长时间允许的任务放在一个单独的线程中运行,那么事件线程就能及时处理界面事件
线程带来的风险?
- 安全性:永远不发生糟糕的事情,如产生竞态条件
- 活跃性:某件正确的事情最终会发生,如死锁、饥饿、活锁
- 性能:某件正确的事情最终会发生,但却不够好,如服务时间过长,上下文切换
远程方法调用RMI
RMI使代码能够调用在其他JVM中运行的对象,一个远程对象上的远程方法会在多个RMI线程中被同时调用
远程对象必须注意两个安全问题?
- 正确地协同在多个对象中共享的状态
- 以及对远程对象本身状态的访问,同一个对象可能会在多个线程中被同时访问