Java线程基础

作者: 依弗布德甘 | 来源:发表于2019-12-28 14:09 被阅读0次

    线程状态

    1. New 尚未启动的线程

    2. Runnable 可运行(在运行)状态,或者等待CPU调度

    3. Blocked 线程阻塞等待监视锁定状态,出于sycnhronized同步代码块或方法中被阻塞

    4. Waiting 等待其他线程通知,收到通知继续执行

      • Obejct.wait 、 Thread.join 、 LockSupport.park
    5. Timed Waiting 具有带超时时间的线程等待状态,收到通知继续执行或超时继续执行

      • Thread.sleep 、Object.wait 、Thread.join 、LockSupport.parkNanos 、LockSupport.parkUntil
    6. Terminated 线程终止状态

      • 线程终止后再调用,会抛出illegalThreadStateException异常

    线程终止

    • 不正确的线程终止
      Thread.stop 弃用,强行终止无法保证线程内部执行完毕

    • 正确的线程终止

      1. Thread.interrupt
        如果线程内部有等待阻塞或挂起状态[ wait()、join()、sleep() ],Interrupt会生效,中断状态被清除,线程内部抛出InterruptedException异常
        如果线程是被I/O或者NIO中的Channel所阻塞,I/O操作会
        被中断或者返回test异常值。

      2. 使用外部标志位控制线程终止
        如:外部全局变量开关来控制线程是否结束

    相关文章

      网友评论

        本文标题:Java线程基础

        本文链接:https://www.haomeiwen.com/subject/hwlsoctx.html