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 同步代码执行完后才 会自然而然的释放锁
    不 (执行完同步代码块才会释放)
  • 相关阅读:
    HTTP 协议 简述
    Git 远程仓库相关
    Git 冲突问题
    单例模式
    extends Thread 与 implements Runnable 的区别
    正则表达式语法大全
    [Hadoop源码解读](六)MapReduce篇之MapTask类
    [Hadoop源码解读](五)MapReduce篇之Writable相关类
    [Hadoop源码解读](四)MapReduce篇之Counter相关类
    [Hadoop源码解读](三)MapReduce篇之Job类
  • 原文地址:https://www.cnblogs.com/frankcui/p/12493553.html
Copyright © 2011-2022 走看看