多线程(4)线程生命周期
多线程有六个状态 1.New(新创建) : 已创建但是还没有启动的新线程, new Thread()还没执行start() 2.Runnable( 可运行) :, 包括start()后等待运行和拿到资源运行中 3.Blocked(被阻塞) : synchronized修饰的代码没有拿到锁(monitor)陷入的等待状态。注意必须是synchronized修饰,其他的锁不是 4.Waiting(等待) : Object.wait(), Thread.join(), LockSupport.park()这三个没有timeout参数的方法会让线程进入等待状态. Object.notify()或者Object.notifyAll(), 等待join方法所运行的线程执行完毕, LockSupport.unpark() 会让等待的线程进入可运行状态 Lock.lock进入的是waiting状态而不是Blocked waiting和blocked的区别根本原因是“是不是内置锁”。Lock不是Java语言支持的锁,是JDK包提供的,而synchronized是关键字级别是,它们不一样。 5.Timed Waiting(计时等待) : 等待的那三个方法带了时间参数, 超时会自动唤醒也可以被notify等唤醒 6.Terminated(被终止) :run方法正常执行完,run被未捕获的异常终止 注意: