zoukankan      html  css  js  c++  java
  • 线程控制

    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

  • 相关阅读:
    【hdu 4135】Co-prime
    【cdoj 1544】当咸鱼也要按照基本法
    【SRM 717 DIV2 C】DerangementsDiv2
    【codeforces 821E】Okabe and El Psy Kongroo
    【SRM 717 div2 B】LexmaxReplace
    【SRM 717 div2 A】 NiceTable
    Network architecture for minimalistic connected objects
    C# 委托的理解
    50条超精辟的经典语录:哗众,可以取宠,也可以失宠!
    50条超精辟的经典语录:哗众,可以取宠,也可以失宠!
  • 原文地址:https://www.cnblogs.com/liutoutou/p/3328488.html
Copyright © 2011-2022 走看看