当前位置:首页 » 编程语言 » java线程sleep

java线程sleep

发布时间: 2025-09-11 18:53:24

1. java线程中wait、await、sleep、yield、join用法总结

一、wait()、notify()、notifyAll()用法

测试代码:

打印日志:

从日志中我们可以看出waitTest方法阻塞直到被notifyTest唤醒。

二、await()、signal()、signalAll()用法

java.util.concurrent类库中提供的Condition类来实现线程之间的协调。

测试代码:

打印日志:

从日志中可以看出我们得到了和wait同样的效果。

三、yield()、join()用法

yield测试代码:

打印结果:

可以看出虽然主线程调用了yield,但是仍然又开始执行了,因此并不能保证轮流执行。

join测试代码:

打印日志:

从日志中我们可以看出主线程在线程执行完成后才开始执行。

四、wait()、await()、sleep()、yield、join对比

通过表格对比(join的情况下,t1指代当前线程,t2代表其他线程)

2. Java线程中wait、await、sleep、yield、join用法总结

Java线程中wait、await、sleep、yield、join用法总结

1. wait 用法:wait方法用于使当前线程等待,直到其他线程调用此对象的notify或notifyAll方法将其唤醒。调用wait方法时,线程必须拥有该对象的监视器。 特点:wait是Object类的方法,必须在同步代码块或同步方法中调用。

2. await 用法:await方法用于使当前线程等待,直到另一个线程调用与当前await调用关联的Condition对象的signal或signalAll方法。与wait不同,await属于java.util.concurrent.locks.Condition接口,通常与ReentrantLock一起使用。 特点:await需要在lock.lock和lock.unlock之间调用,以实现更灵活的线程同步。

3. sleep 用法:sleep方法使当前线程休眠指定的毫秒数。线程在休眠期间不会释放任何监视器。 特点:sleep是Thread类的方法,用于控制线程的执行节奏,但不涉及线程间的通信。

4. yield 用法:yield方法提示调度器当前线程愿意放弃当前对处理器的使用。调度器可以忽略这个提示。 特点:yield是Thread类的方法,通常用于提高程序的并发性能,但不能保证线程会立即放弃处理器。

5. join 用法:join方法使当前线程等待,直到调用join方法的线程执行完毕。这可以用于确保某些线程在继续执行之前完成其任务。 特点:join是Thread类的方法,常用于控制线程的执行顺序。

总结对比

  • wait、await:都用于使线程等待,但wait是Object类的方法,通常与synchronized一起使用;await是Condition接口的方法,通常与ReentrantLock一起使用。
  • sleep:使线程休眠,不涉及线程间的通信。
  • yield:提示调度器当前线程愿意放弃处理器,但不保证立即放弃。
  • join:使当前线程等待另一个线程执行完毕,常用于控制线程执行顺序。
热点内容
ton在编程 发布:2025-09-11 20:48:35 浏览:739
服务器主地址是什么情况 发布:2025-09-11 20:46:35 浏览:316
php单引号双引号 发布:2025-09-11 20:33:46 浏览:832
c语言细节 发布:2025-09-11 20:29:37 浏览:246
双脚本结构 发布:2025-09-11 20:29:31 浏览:881
云存储时间 发布:2025-09-11 20:01:58 浏览:598
access数据库if语句 发布:2025-09-11 19:52:34 浏览:181
安卓程序的用户数据在哪里 发布:2025-09-11 19:41:21 浏览:277
安卓的数据库 发布:2025-09-11 19:29:40 浏览:986
python语言是一门编程语言 发布:2025-09-11 19:27:09 浏览:570