线程五种状态
new: implements runnable ;extends thread
runnable:调用start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权running: 执行代码
blocked: 放弃cpu使用权。等待阻塞:wait()方法同步阻塞:获取同步锁时,该锁被占用,被放到锁池中其他阻塞:运行sleep,join 或发出io请求时。
dead: 执行完成或异常退出
sleep yield join wait
sleep:当前线程进入阻塞,但不释放对象锁,millis后线程自动苏醒进入可运行状态
yield:当前线程放弃获取的cpu时间片,由运行状态变会可运行状态,让OS再次选择线程.能不能抢到不管join:在自己当前线程加入你调用Join的线程(),本线程等待。等调用的线程运行完了,自己再去执行
wait:当前线程释放对象锁,进入等待队列。依靠notify()/notifyAll()唤醒或者wait(long timeout)timeout时间到自动唤醒
notify:唤醒在此对象监视器上等待的单个线程,选择是任意性的。notifyAll()唤醒在此对象监视器上等待的所有线程
implements extends
extends:Java是单继承机制,不允许同时继承多个类
implements:多个线程共享一个对象
star run
star :变成可执行状态,真正实现了多线程运行run: 直接执行
多线程就是分时利用CPU,宏观上让所有线程一起执行 ,也叫并发。
网友评论