zoukankan      html  css  js  c++  java
  • 并发知识(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

    当你准备好了,机会来临的时候,你才能抓住
  • 相关阅读:
    css和js实现硬件加速渲染自定义滚动条
    入驻博客园
    原生JS实现动态折线图
    纯JS自定义网页滚动条
    Unity实现代码控制音频播放
    MVC实现修改数据
    JS实现将二维数组生成到页面上
    JS实现页面计时
    多中方式,实现斐波那契数列
    算法题
  • 原文地址:https://www.cnblogs.com/studentytj/p/11291049.html
Copyright © 2011-2022 走看看