zoukankan      html  css  js  c++  java
  • 线程的状态

    线程的状态

     

     

    线程被创建时,属于新建状态,调用start后进入就绪状态

    就绪状态被cpu调用时,进入运行状态

    运行状态在调用sleep、wait、join后会进入阻塞状态

    运行状态执行完成后会进入死亡状态,这里包括正常执行完毕和异常执行完毕

    运行状态在os切换时,线程会进入就绪状态

    线程wait进入阻塞状态,被调用notify之后,会进入就绪状态

    线程sleep进入阻塞状态,时间过后会进入就绪状态

    当前线程的子线程join之后,当前线程进入阻塞状态,在子线程死亡之后,当前线程进入就绪状态

    阻塞状态的线程,被中断之后会进入死亡状态

    线程相关的一些方法解析

    sleep

    详细描述:

    Thread类的静态方法

    public static native void sleep(long millis) throws InterruptedException; 

    使当前线程睡眠n毫秒,线程从运行状态进入阻塞状态,n毫秒之后重新进入就绪状态,继而进入运行状态

    进入阻塞状态后可以被中断

    被调用t.interrupt()之后,该线程会被中断,sleep方法处抛出InterruptedException,捕获之后可以做相应处理

    join

    Thread类的非静态方法

    public final void join() throws InterruptedException

    使用举例:

    Thread t = new Thread();

    t.start();

    t.join();

    这里定义主线程main,子线程t

    main调用t.join之后会进入阻塞状态,等待t线程的完结,t完结之后,main线程进入就绪状态

    main线程在调用t.join之后,也可以被interrupt()中断。

    yield

    Thread类的非静态方法

    public static native void yield();

    当前线程主动让出cpu,从运行状态进入就绪状态,这个动作并不是立即执行的

    interrupt

    Thread类的非静态方法

    public void interrupt()

    线程对象调用interrupt之后,会从阻塞状态退出来,并抛出InterruptedException异常

    wait

    Object类的方法

    public final void wait() throws InterruptedException

    使用举例

    Object obj;

    obj.wait();

    此方法必须在同步块中调用,wait之后线程进入阻塞状态,当是不会释放对象的锁

    被调用interrupt()之后,该线程会被中断,抛出InterruptedException

    notify

    Object类的方法

    public final native void notify()

    Object obj;

    obj.notify();

    此方法会唤醒在对象obj上wait的线程,只会唤醒一个

    notifyAll

    Object类的方法

    public final native void notifyAll();

    Object obj;

    obj.notifyAll();

    此方法会唤醒在对象obj上wait的所有线程

  • 相关阅读:
    从TimeQuest角度看set_max_delay
    stm32的窗口看门狗的一点发现
    UcosII 就绪表的理解
    关于stm32 APB总线上的"接口时钟使能"与"外设时钟使能"
    关于STM32单片机GPIO口上拉与下拉输入
    从TimeQuest角度看create_generated_clock
    201871010133 赵永军《面向对象程序设计(java)》第六、七周学习总结
    201871010133赵永军《面向对象程序设计(java)》第十一周学习总结
    201871010133赵永军《面向对象程序设计(java)》第二周学习总结
    201871010133赵永军《面向对象程序设计(java)》第十二周学习总结
  • 原文地址:https://www.cnblogs.com/tangyanbo/p/6725369.html
Copyright © 2011-2022 走看看