什么是进程?什么是线程?
一个程序运行起来就是进程,是操作系统进行资源分配的最基本单位。线程是cpu进行分配和调度的最基本单位,一个进程至少有一个线程,可以有多个线程。
线程的生命周期
新建-->(调用start方法)进入就绪状态-->进行cpu的抢占,抢到cpu时间片就进入运行状态,在运行状态下,也可能失去cpu时间片,从而再次回到就绪状态。在运行状态也可能会发生阻塞。线程发生阻塞分四种情况;①线程调用了sleep()方法-->括号中加时间,时间过后自动恢复②执行了io操作-->操作完成后恢复③调用了suspend()方法,将线程挂起。-->调用resume()方法恢复线程④调用线程的wait()方法。-->需要调用notify()/notifyAll()通知;阻塞后会回到就绪状态,重新抢cpu,运行后会执run()方法,执行完后线程进入死亡状态。被gc垃圾回收机制回收。
(gc回收有两种方法①引用计数法;看对象身上的引用数量,有一个引用就+1,少一个就-1。当对象的引用数量为0时会被回收,但是不能解决两个对象互相引用的问题。另一种是可达性算法。对象有一个引用链,来判断对象是否可达,不可达就回收。)
线程的运行方式
<