java 停止执行_java点滴之让Thread的停止执行的方法

本文详细介绍了Java中用于线程控制的三个关键方法:Thread.yield(), Thread.sleep()及join()方法的作用与应用场景。解释了yield()如何使得当前线程放弃CPU资源,sleep()方法如何使线程进入睡眠状态,以及join()方法如何实现线程间的同步。

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

1.Thread.yield()方法作用是:

暂停当前正在执行的线程对象,并执行其他线程。   yield()应该做的是让当前运行线程回到可运行状态,以允许具有相同优先级的其他线程获得运行机会。因此,使用yield()的目的是让相 同优先级的线程之间能适当的轮转执行。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。   结论:yield()从未导致线程转到等待/睡眠/阻塞状态。在大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果

2.Thread.sleep():

使当前线程睡眠至少多少毫秒(尽管它可能在指定的时间之前被中断)。

3.join()方法:

保证当前线程停止执行,直到该线程所加入的线程完成为止。然而,如果它加入的线程没有存活,则当前线程不需要停止, 在线程myMainThread中调用另一个线程对象myThread的join方法,意味着,myMainThread线程必须等待myThread这个线程指向完毕后,才能往下执行,相当于   此时myThread插入进来,邀请必须全部完成才放行。

如果使用的是join(long millis) ,则参数表示myMainThread线程的最长等待时间,这个数值过后,就不等了

4.几种特殊情况可能使线程离开运行状态:

1、线程的run()方法完成。

2、在对象上调用wait()方法(不是在线程上调用)。

3、线程不能在对象上获得锁定,它正试图运行该对象的方法代码

4、线程调度程序可以决定将当前运行状态移动到可运行状态,以便让另一个线程获得运行机会,而不需要任何理由

原文:http://blog.youkuaiyun.com/lskshz/article/details/25605517

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值