线程的礼让、等待、睡眠到底什么区别

线程的礼让(yield)会让当前线程让出CPU时间片,而等待(wait)则会让线程进入等待队列释放锁,等待其他线程通知。线程睡眠(sleep)则会让线程暂停指定时间,不释放锁。这些方法用于控制并发执行的线程交互和资源分配。
摘要由CSDN通过智能技术生成

线程的礼让、等待、睡眠是Java 并发编程中常用的三种方法

下面是我总结的线程这三种方法的一些区别

1. 礼让(yield):线程礼让是指当前线程主动让出 CPU 资源,让其他线程先占用 CPU 进行运行。通过 `Thread.yield()` 方法来实现线程礼让。需要注意的是,线程礼让仅会将当前线程的 CPU 时间片让给其他线程,但并不会改变当前线程的状态

2. 等待(wait):线程等待是指当前线程进入等待状态,等待其他线程通知自己执行。在等待期间,当前线程会释放掉它所持有的锁,并进入等待队列中。在 Java 中,等待通过调用对象的 `wait()` 或 `wait(long)` 方法实现。需要注意的是,`wait()` 方法需要在同步块或同步方法中被调用。

3. 睡眠(sleep):线程睡眠是指当前线程停止执行,让出 CPU 资源,并进入到阻塞状态,但不会释放锁。通过调用 `Thread.sleep(long)` 方法实现,其中参数为线程休眠的时间,单位为毫秒。

总之,在并发编程中,当多个线程共享 CPU 资源时,常常需要使用这三种方式来合理控制线程的执行顺序和状态。需要根据实际情况,选择适当的方式来运用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值