线程知识点

    技术2022-07-16  76

    线程生命周期:

    new : 新建一个线程

    runnable : 线程进入可执行状态

    running : 线程获取到了cpu的时间片进入执行状态,处于运行中状态

    blocked : 线程进入了阻塞状态,放弃了时间片的使用权,恢复到了runnable状态,等到重新获得时间片进入running状态

    dead  : 线程完成了执行任务或者线程被终止 

    线程涉及的方法:

    1、wait() : 线程处与等待(阻塞)状态,并且释放所持有的对象的锁

    2、sleep() : 使正在执行的线程处于睡眠状态(阻塞状态),对象的锁依然保持,睡眠时间结束后自动恢复,是一个静态方法,调用方法要处理InterruptException异常,可移植性(跟操作系统cpu调度相关)更好

    3、notify() : 唤醒一个处与等待状态的线程,但是不是确切唤醒某一个线程,由jvm决定唤醒哪个线程,且与优先级无关

    4、notifyAll() : 唤醒所有处与等待状态的线程,不是将对象的锁给所有的线程,而是让他们竞争,只有获得锁的线程才能进入就绪状态

    5、yield() : 线程进入就绪状态,不用声明任何异常,但是只会给相同优先级或者更高优先级的线程以运行机会,可移植性较sleep()差

    Processed: 0.026, SQL: 9