Java并发编程2——常见方法

本文总结了Java并发编程中线程的常用方法及其特点,包括start(), run(), join(), getId(), getName(), getPriority(), getState(), isInterrupted(), isAlive(), interrupt(), interrupted(), currentThread(), sleep(), yield()等方法的功能与使用场景,并对sleep()与wait()进行了对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java并发编程

前言

总结一下Java并发中线程常用的方法


一、常用方法总结

方法名static功能说明备注
start()启动一个新线程,并在新的线程执行run()start()方法只是让线程进入就绪状态,能否立刻执行需要看cpu是否分时间片给它,每个线程对象的start()只能调用一次,调用多次则会出现IllegalThreadStateException
run()新启动的线程会调用的方法
join()等待线程运行结束
join(long n)等待线程运行结束,最多等待n毫秒
getId()获取线程长整型idid唯一
getName()获取线程名
setName(String)修改线程名
getPriority()获取线程优先级
setPriority(int)修改线程优先级Java中规定线程优先级是1-10的整数,较大的优先级能提高该线程被CPU调度的几率
getState()获取线程状态Java中线程状态是用6个enum表示,分别是:NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED
isInterrupted()判断是否被打断不会清楚打断标记
isAlive()线程是否存活(还没有运行完毕)
interrupt()打断线程如果被打断线程正在sleep、wait、join会导致被打断的线程抛出InterruptedException,并清除打断标记;如果打断的正在运行的线程,则会设置打断标记;park的线程被打断,也会设置打断标记
interrupted()static判断当前线程是否被打断会清楚打断标记
currentThread()static获取当前正在执行的线程
sleep(long n)static让当前执行的线程休眠n毫秒,休眠时让出cpu的时间片给其他线程
yield()static提示线程调度器让出当前线程对CPU的使用

二、常用方法对比

  • sleep() 和 wait()
    1、sleep()方法属于Thread类的static方法,wait()方法属于Object类,任何对象都可以使用
    2、sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者(不会释放锁,进入Timed_Waiting状态),当指定的时间到了又会自动恢复运行状态;wait()方法会使线程放弃对象锁,只有针对此对象调用notify()或notifyAll()方法后,重新获得对象锁资源后才能继续执行
    3、sleep()和wait()都可以被interrupted()方法打断
watisleep
同步只能在同步上下文中调用wait方法,否则会抛出IllegalMonitorStateException异常不需要在同步方法或同步块中调用
作用对象wait方法定义在Object类中,作用于对象本身sleep定义在java.lang.Thread中,作用于当前线程
释放锁对象
唤醒条件其他线程调用对象的notify()或者notifyAll()方法超时或者调用interrupt()
方法属性wait是实例方法sleep是静态方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值