参考:Java核心技术 卷I 基础知识 第十四章
多进程与多线程有哪些区别呢?本质的区别在于每个进程拥有自己的一整套变量,而线程则共享数据。似乎有些风险,但是共享变量使线程之间的通信比进程之间的通信更有效、更容易。在有些操作系统中,与进程相比,线程更轻量级,创建、撤销一个线程比启动新进程的开销要小的多。
线程可以有的状态:new、runnable、blocked、waiting、timedwaiting、terminated。
守护线程,可以通过调用t.setDaemon(true)将线程转换为守护线程。守护线程唯一用途是为其他线程提供服务。
将静态方法声明为synchronized也是合法的,如果调用这种方法,该方法获得相关的类对象的内部锁。例如,如果Bank类有一个静态同步的方法,那么当该方法被调用时,Bank.class对象的锁被锁住,因此,没有其他线程可以调用同一个类的这个或者任何其他的同步静态方法。
内部锁和条件存在一些局限。包括:
在代码中应该使用哪一种?Lock、Condition对象还是同步方法?