多线程--03--线程常用API

一、Thread类提供的常用API

Thread类是多线程的核心类,Thread类常用的API如下表

方法名 功能说明 注意
start()启动一个新线程,在新的线程运行 run 方法中的代码start 方法只是让线程进入就绪,里面代码不一定立刻运行(CPU 的时间片还没分给它)。 每个线程对象的start方法只能调用一次 ,如果调用了多次,会出现IllegalThreadStateException
run()新线程启动后会调用的方法 
yield() 提示线程调度器让出当前线程对CPU的使用,让出后可能该线程又继续被调度执行主要是为了测试和调试
sleep(long n) 让当前执行的线程休眠n毫秒,休眠时让出 cpu的时间片给其它线程
join()等待线程运行结束谁调用,等待谁执行结束
join(long n)等待线程运行结束,最多等待 n毫秒1、线程执行结束耗时小于n毫秒时,join方法会提前结束;
2、有多个线程都执行join时,总耗时会是最大的那个n值,
并不是n累加
interrupt() 打断线程(理解为设置打断标记为true)1、如果被打断线程正在 sleep、wait、join ,会导致被打断的线程抛出 InterruptedException,并清除打断标记;
2、如果打断正在运行的线程,不会抛出异常、不会清除打断标记;
3、park 的线程被打断,会导致被打断的线程抛出 InterruptedException,但不会清除打断标记;
interrupted() 打断线程(理解为设置打断标记为true),是Thread类的静态方法会清除打断标记,即该方法被调用后,会设置线程打断标记为false
isInterrupted() 判断线程打断标记是否为true不会清除打断标记
currentThread() 获取当前正在执行的线程
getId() 获取线程长整型
id 
id 唯一
getName() 获取线程名
setName(String) 修改线程名
getPriority() 获取线程优先级
setPriority(int) 修改线程优先级 1java中规定线程优先级是1~10 的整数,较大的优先级能提高该线程被 CPU 调度的机率;
2
仅是设置优先级,哪个线程被调度还是由操作系统控制
isAlive()判断线程有没有运行完毕
setDaemon()设置守护线程默认情况下,Java 进程需要等待所有线程都运行结束,才会结束。有一种特殊的线程叫做守护线程,只要其它非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束。

JVM启动后有哪些线程?
   -- main
   -- Finalizer
GC守护线程
    --RMIJava自带的远程方法调用
    --Monitor :是一个守护线程,负责监听一些操作,也在main线程组中
getState() 获取线程状态Java 中线程状态是用 6 enum 表示,分别为:NEW, RUNNABLE, BLOCKED, WAITING,TIMED_WAITING, TERMINATED
stop() 停止线程运行已过时,容易破坏同步代码块,造成线程死锁
suspend() 挂起(暂停)线程运行
resume() 恢复线程运行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值