线程的常用方法

在操作系统中,线程之间的执行是相互独立的,哪一个线程先执行取决于操作系统的调用。
线程的类在java.lang包下:
在这里插入图片描述

一、线程操作的相关方法

  1. void start()
    启动一个新的线程,start方法必须子线程第一个调用的方法,start不能够重复调用,新线程会调用runnable接口提供的run方法

  2. void run()
    run方法是子线程的执行体,子线程从进入run方法开始直至run方法执行接收意味着子线程的任务执行接收, 在主线程直接调用run方法是不能创建子线程,只是普通方法调用

  3. yield()
    让步或者暂停,Thread类的静态方法。让正在执行的线程停止或者让步,让给优先级较高的线程获取CPU的执行权,
    (不一定会让出CPU执行权,如等待的线程优先级较低或者当前只有一个线程在执行时,
    那么当先线程又会立即获取CPU的执行权)
    thread.yield(), 这个线程不一定是正在执行的线程

  4. sleep(long millis)
    sleep方法作用是让线程进行休眠,即让线程阻塞住,Thread类提供的静态方法,会抛出 InterruptedException异常

  5. join()
    等待线程执行结束才继续执行.会抛出 InterruptedException异常
    假如在a线程中b线程进行b.join调用,a线程等待b线程执行结束后才能继续执行,控制多线程按照次序执行

  6. interrupt()
    中断方法:底层调用native方法,native方法的作用是对特定标识位做修改
    主要作用于线程:运行中线程、阻塞线程(sleep、join)
    运行中的线程:interrupt方法仅仅是对标志位做了修改,其他没有影响
    阻塞线程:interrupt方法对标志位做了修改,另阻塞中的线程感知到标志位做了修改,
    就会中断当前的阻塞状态,抛出InterruptedException异常

  7. isInterrupted()
    判断是否发生了中断操作,返回为Boolean,true:表示发生中断 false:表示未发生中断

  8. setDaemon(boolean on)
    设置守护线程 ,true:设置为守护线程 false:用户线程 默认就是用户线程

  9. isDaemon()
    判断当前线程是否为守护线程,返回Boolean类型 true:守护线程 false:非守护线程

  10. setPriority(int newPriority)
    设置线程优先级,优先级分为10级,优先级数字越大,即优先级越高,优先级越高,被优先调用的概率会大
    MIN_PRIORITY = 1; 最小优先级
    NORM_PRIORITY= 5; 默认优先级
    MAX_PRIORITY = 10; 最大优先级
    int getPriority(), 返回当前程序的优先级

  11. getName()/setName()
    返回当前线程的名称/设置当前线程的名称

  12. getId()
    返回当前线程的标识符

二、用户线程和守护线程

守护线程:脱离于空中终端,作为提供通用服务的线程存在
用户线程:main方法进入主线程,可以创建启动新的线程,默认为用户线程,只有当用户线程和主线程都结束后,应用程序才终止
两者区别:
守护线程的生命周期是依赖于用户线程,当有用户线程存在,守护线程就会存活,当没有用户线程存在,那守护线程也随之消亡,垃圾回收是有单独线程来处理的,负责垃圾回收的线程就是守护线程

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值