• 并发知识(2)——关于Thread


    一些容易混淆的知识点

    1. sleep vs wait

    sleep是Thread,wait是Object方法

    wait和notify只能在同步代码块中调用

    wait释放锁资源,sleep不释放锁资源

    唤醒条件:wait通过notify或者notifyAll,sleep超时或者调用interrupt方法

    关于Thread

    类定义:

    class Thread implements Runnable

    Java doc:

    每个线程都有优先级,线程的优先级与创建它的线程的优先级一样,当然,如果创建它的线程是daemon则创建出来的也是daemon

    当JVM启动时,通常有一个non-daemon线程——该线程会调用指定类的main方法。

    JVM会一直执行线程除非遇到下面两种情况:

    1. Runtime类的exit方法被调用或安全管理器允许退出操作
    2. 所有非守护线程死亡,要么从对run方法的调用返回,要么抛出一个在run方法之外传播的异常

    内部类State:

    NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED

    所以你看到的所有的状态转换,在Java文档里有写。。。

    • 优先级:最小1最大10 正常5
    • new Thread的时候默认名字“Thread-” 加上线程数量
    • Thread中有一个target,调用run的时候如果target != null则调用target的run方法
    • 退出之前会调用一下exit()方法
    • yield:告诉调度器处理器我暂时可以让给别的线程使用,调度器可以无视。很难正确使用,主要用于调试或测试。
    • sleep:The thread does not lose ownership of any monitors.
    • join:等待线程死亡,join(0)无限期等待

    这里顺便看下Object的wait方法:The thread releases ownership of this monitor

    当你准备好了,机会来临的时候,你才能抓住
  • 相关阅读:
    网络对抗实验一
    计蒜课--顺序表查找、删除、遍历操作的复习
    实验六
    实验五
    实验四
    实验三
    python补码转源码
    教学设计的方法
    十、python进程和线程
    九、文件和异常
  • 原文地址:https://www.cnblogs.com/studentytj/p/11291049.html
Copyright © 2020-2023  润新知