zoukankan      html  css  js  c++  java
  • 多线程

    线程常见函数 来源类 是否 Static 说明 是否释放锁
    sleep() Thread static 只能操作当前线程。时间到后(没有interrupt的情况下),回到“就绪”状态
    yield() Thread static 只能操作当前线程。只让出CPU时间片。不让出持有的锁和其他资源(磁盘IO,内存)
    join() Thread no 在线程 B 中调用了线程 A 的 Join()方法,直到线程 A 执行完毕后,才会继续 执行线程 B
             
    interrupt() Thread no

    可以在A 线程里调用B.interrupt(),只是将B线程的interrupted标志位置为true。

    • 一般情况下,毫无影响。由用户自定义代码处理该标志位改变后的情况。
    • 但当B线程正在sleep,wait,join,B线程自己会立即抛InterruptException异常...详情
    interrupted() Thread static 只能操作当前线程。会判断当前线程的interrupted状态,并且会重置该状态为false.
    isInterrupted() Thread no 可以在A 线程里调用B.isInterrupted().只是返回被检查线程的标志位情况,不会重置。
             
    wait() Object no

    针对某一个对象调用:object.wait(). 

    • 会释放当前线程持有的锁,而且当前被唤醒后,会重新 去竞争锁,锁竞争到后才会执行 wait 方法后面的代码
    notify()/notifyAll() Object no

    针对某一个对象调用:object.notify()

    • 调用 notify()系列方法后,对锁无影响,线程只有在 syn 同步代码执行完后才 会自然而然的释放锁
    不 (执行完同步代码块才会释放)
  • 相关阅读:
    sql server报【将截断字符串或二进制数据】错误
    消息队列的一些知识
    excel中添加下拉候选
    君生我未生,我生君已老
    分库分表的几个面试题
    sql server判断表存在
    vue定义data的三种方式与区别
    sql server多表关联update
    使用CodeMirror在浏览器中实现编辑器的代码高亮效果
    Jquery easyui Tree的简单使用
  • 原文地址:https://www.cnblogs.com/frankcui/p/12493553.html
Copyright © 2011-2022 走看看