进程的产生如上所述,每一个进程由3部分组成:java
cpu、data、code安全
通常一个程序会占用一个或多个进程,即使用同一份程序产生好几个进程,它们之间仍是拥有本身的这3样东西,比较浪费内存,cpu的负担较重。多线程
一个进程每每会产生多个线程,以达到提升效率的目的,若是一个进程,只能作到单任务处理,就比如一个低效的员工,既耗着不走,又作不到高效率工做线程
那么说了这么多"多线程"的好处,多线程是否也有坏处呢?code
当多个线程访问同一个方法时,若其中须要共享变量(或者说须要去从方法中取出一个相同的变量对其进行操做),那么问题就来了对象
好比A线程在访问C方法时取出了变量,还未跳出方法,这时B线程插足了进来,取到的变量多是A操做前也多是A操做后的,可能就达不到咱们预期想要的结果了blog
当一个方法中,须要同时得到"两个或两个以上对象的锁"时,就可能产生死锁问题,两个线程陷入了互相等待,没法继续进行的死锁状态接口
**注意** 1. 在定义**接口**方法时不能使用synchronized关键字。 2. 构造方法不能使用synchronized关键字,但可使用synchronized代码块来进行同步。
咱们能够先来看一下线程状态图
进程
能够看到wait方法和notify方法必须存在于synchronized块中内存
未完待更......