关于线程的一些记录

线程五种状态

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,宏观上让所有线程一起执行 ,也叫并发。

你可能感兴趣的:(关于线程的一些记录)