zoukankan      html  css  js  c++  java
  • 四、线程中常用的方法


    1.设置线程的优先级
    SetPriority()
    a.可以通过设置线程的优先级来改变线程争抢到时间片的概率,优先级高的争抢到时间片的概率越大【并不是说优先级低的抢不到时间片】
    b.默认情况下,创建出来的线程优先级都是5,每个线程创建在哪里,就和当前线程有同样的优先级,举例:main线程的优先级为5,在它里面创建出来的子线程优先级全部都是5
    c.优先级的取值范围:1~10,默认为5,数字越大,优先级越高
    d.这个方法的调用必须在start之前,否则没有任何意义

    static int MAX_PRIORITY 10
    线程可以具有的最高优先级。
    static int MIN_PRIORITY 1
    线程可以具有的最低优先级。
    static int NORM_PRIORITY 5
    分配给线程的默认优先级。

    2.让线程休眠
    static void sleep(long millis)
    在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

    a.使得当前正在执行的线程进入休眠状态,进入阻塞状态【放弃了时间片】
    b.如果设定的时间结束之后,对应的线程还会继续争抢时间片
    c.跟线程的优先级没有关系【一般将该方法的调用写在线程的执行体中---run方法中】

    3.中断线程
    interrupt():表示的并不是将线程结束,而是表示清除阻塞状态
    如果一个线程没有处于阻塞状态,这时调用interrupt将不起作用,否则,会引起InterruptedException【该线程预先准备好处理这种状态】

    void interrupt()
    中断线程。
    static boolean interrupted()
    测试当前线程是否已经中断。
    boolean isInterrupted()
    测试线程是否已经中断。

    4.线程合并
    join()
    注意:在执行原来的线程的过程中,如果遇到了合并线程,则优先执行合并进来的线程,当合并线程执行完毕之后,再接着执行原来的线程

    特点:
    a.合并线程,当前正在执行的线程一定会释放时间片,将时间片让给合并进来的线程
    b.哪个线程需要合并,就在线程执行体中调用该方法
    c.调用join方法之前,一定要将线程start

    5.后台线程
    setDeamon(boolean b)
    表示的是隐藏起来的一直默默运行的线程,直到线程结束,又被称为精灵线程,也被称为守护线程,举例:JVM的垃圾回收机制就是一个典型的后台线程

    特点:如果所有的前台线程死亡,那么后台线程会自动死亡
    默认情况下所有的线程都是前台线程
    setDeamon(true)才表示当前线程被设置成了后台线程
    这个方法的调用必须在start之前


    6.线程让步
    yield()
    和sleep类似
    特点:可以让当前正在执行的线程暂停,但是它不会阻塞线程,只是将该线程转入就绪状态,完全可能出现的情况是:当某个线程调用了yield之后,cpu会再次执行该线程

    注意:实际上,当某个线程调用yield方法暂停之后,只有优先级与当前线程相同,或者高于当前线程的其他线程才会有争抢时间片的机会

    总结:yield方法和sleep方法之间的区别
    a.是否和优先级有关:sleep方法暂停当前线程之后,会给其他的线程执行的机会,不会理会线程的优先级;但是yield方法只给优先级和它相等或者高的线程执行的机会
    b.是否让线程进入阻塞状态:sleep会让线程进入阻塞状态,直到结束了阻塞状态之后才会转入就绪状态,但是yield不会将线程转入阻塞状态,直接强制当前线程进入就绪状态
    c.是否会抛出异常:sleep会抛出InteruptedException,所以调用sleep方法要么捕获异常,要么抛出异常,但是yield方法不会抛出任何异常
    d.sleep方法比yield方法更好控制,尽量不要依赖yield方法来控制线程的执行

  • 相关阅读:
    How to alter department in PMS system
    Can't create new folder in windows7
    calculate fraction by oracle
    Long Wei information technology development Limited by Share Ltd interview summary.
    ORACLE BACKUP AND RECOVERY
    DESCRIBE:When you mouse click right-side is open an application and click left-side is attribution.
    ORACLE_TO_CHAR Function
    电脑BOIS设置
    JSP点击表头排序
    jsp+js实现可排序表格
  • 原文地址:https://www.cnblogs.com/lsp-lsp/p/7344363.html
Copyright © 2011-2022 走看看