关于thread的几点认识

本文详细介绍了Java中线程的生命周期,包括线程的启动、执行与阻塞等状态变化过程,并深入探讨了线程间的交互机制,如wait(), notify()等方法的正确使用。

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

线程生命周期


线程api详解

线程执行

start() - 使该线程开始执行,java虚拟机调用其run方法。

run() -   如果该线程是使用独立的Runnable运行对象构造的,则调用其Runnable对象的run方法;否则该方法不执行任何操作并返回。

线程阻塞

sleep() -  让当前正在执行的线程休眠指定的时间(暂停执行)

yield() -  让出cpu的使用权,给其他的线程执行机会,让同等优先权的线程可以执行(但并不保证当前线程会被JVM再次调度,使该线程重新进入Running状态),如果没有同等优先权的线程,那么yield方法将不起作用。

线程生命周期

isAlive() - 判断当前线程是否还活着

join() - 使用该方法的线程会在此执行完毕之后再往下继续执行。眼睁睁的看着她死去,什么都不做。

线程交互

wait() - 当一个线程执行到wait()方法时,他就进入到一个和该对象相关的等待池(Waiting Pool)中,同时失去了对象的锁---暂时的,wait后还要返还对象锁。当前线程必须拥有当前对象的锁,如果当前线程不是此锁的拥有者,会抛出IllegalMonitorStateException异常,所以wait()必须在synchronized block中调用。

notify()/notifyAll() -  唤醒在当前对象等待池中等待的第一个线程/所有线程。notify()/notifyAll()也必须拥有相同对象锁,否则也会抛出IllegalMonitorStateException异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值