• 线程控制


    1、join线程

    当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join方法加入的join线程完成为止。

    2、后台进程

    任务是为其他的线程服务,如JVM的垃圾回收线程。如果所有的前台线程都死亡,后台线程会自动死亡

    调用Thread对象setDaemon(true)可将指定线程设置成后台线程,但其必须在start()方法之前调用

    3、线程睡眠:sleep

    当前线程调用sleep方法后进入阻塞状态,在其sleep时间段内,该线程不会获得执行的机会,即使没有其他可运行的线程,处于sleep中的线程也不会运行,因此sleep方法常用来暂停程序的执行

    4、线程让步:yield

    让当前正在执行的线程暂停,但不会阻塞线程,而是将其转入就绪状态。yield只是让当前线程暂停一下,让系统的线程调度器重新调度一次,有可能暂停后有重新执行

    当某个线程调用yield方法暂停后,只有优先级与当前线程相同,或者比当前线程优先级更高的就绪状态线程才获得执行机会

    sleep与yield区别:

    1)sleep暂停后会给其他线程执行机会,不理会其他线程优先级,但yield只会给优先级相同或更高的线程执行机会

    2)sleep将线程转入阻塞状态,直到阻塞时间到了才会转入就绪状态,而yield不会转入阻塞状态,只强制当前线程进入就绪状态。

    3)sleep方法声明抛出异常,调用时要么捕获异常要么显示抛出异常,yield没有声明任何抛出异常

    4)sleep比yield有更好的可移植性,通常不依靠yield控制并发线程的执行

    5、改变线程优先级

    Thread提供了setPriority(int priority)和getPriority()来设置和返回线程优先级

    MAX_PRIORITY:10

    MIN_PRIORITY:1

    NORM_PRIORITY:5

  • 相关阅读:
    phxpaxos状态机的管理
    redis基础
    phxpaxos的checkpoint从哪个server同步
    结合phxpaxos简单看下paxos
    levelDB实现相关概念及基础
    在变参模版出现之前,functional如何实现bind功能
    IntelliJ IDEA自动部署项目至远程服务器与传统部署项目至远程服务器的区别
    Python实现王者荣耀小助手(二)
    Python实现王者荣耀小助手(一)
    高性能网络通信框架 HP-Socket
  • 原文地址:https://www.cnblogs.com/liutoutou/p/3328488.html
Copyright © 2020-2023  润新知