首页 > 试题广场 > JAVA 中可以让线程停止执行方法有()
[不定项选择题]
JAVA 中可以让线程停止执行方法有()
  • sleep();
  • notify();
  • synchronized();
  • yield();
感觉这题有问题,sleep只是让线程休眠一会并没用停止啊,yield只是让运行中的线程回到就绪状态,synchronized只是同步阻塞,让线程进入对象的阻塞队列也没用停止执行
发表于 2019-08-29 06:54:31 回复(8)
  1. sleep()线程结束休眠后会进入Runnable状态,也就是停止执行了。要再次被调度程序选中然后获得cpu时间片才会被执行。Thread.sleep(0)就是个很好的例子,就是让大家再抢一次cpu时间片。sleep()是线程本身的静态方法,谁调用谁休眠,就算a线程调用b线程的sleep也是a线程休眠。
  2. 另外join方法调用后会等待线程执行完成后又会进入Runnable状态
  3. 等待用户输入的线程,用户输入之后也会重新进入Runnable状态

以上三种都是blocked状态的三种情况
另外synchronized修饰的方法和类,会让没抢到锁的线程停止执行,yield是让当前执行的线程让出cpu时间片(并不是线程本身的方法),也算让线程停止执行了。只要不是Running状态都是停止执行了
编辑于 2020-04-02 17:53:00 回复(3)
我没记错的话,yeild()这个只是告诉JVM,当前线程的核心(或者说主要)内容执行结束,同时给JVM提个建议,可以让出CPU去执行其他任务。
至于synchronized……这个应该就是在说这个关键字吧,按我的理解。
如果出现死锁的话,JVM会结束程序运行的。线程数量过多则不会。
编辑于 2019-08-28 16:06:00 回复(2)
这个题说的是方法,而synchronized是关键字,我觉得应该选ad

编辑于 2019-09-02 14:37:03 回复(5)
题目想表达的意思是可以让线程暂停的方法,ACD 符合
发表于 2020-03-17 11:23:22 回复(0)
sleep让线程抱着资源睡觉,进入阻塞状态,sleep完毕进入就绪状态,再去抢cpu执行权,sleep执行时间再短也必定会停止运行;
yield()礼让:让线程先放弃cpu,进入就绪状态,再和别的线程抢cpu执行权,所以必定停止;
synchronized()我只能理解为没有抢到锁,处于等锁被阻塞状态

发表于 2019-11-27 22:04:44 回复(1)
C是正确的?
发表于 2019-09-13 17:39:56 回复(0)
当一个线程抢到执行权后,执行到yield()方法后,就会放弃执行权,其他线程就可以拿到执行权 了。
发表于 2019-08-21 10:58:14 回复(0)
ifg头像 ifg
<p>c没有这个方法吧</p><p><br></p><p><br></p>
发表于 2020-05-28 14:56:40 回复(0)
线程停止应该用stop或者interrupt()。interrupt是中断线程,需要在线程中判断状态,自行结束。
题目问的有问题,应该说是让线程暂停或者阻塞线程,而不是停止。
发表于 2020-04-02 21:54:56 回复(0)
内推链接:https://www.nowcoder.com/discuss/376314
发表于 2020-03-06 18:13:01 回复(0)
yield()方法是让线程从running状态变成runnable 
发表于 2019-09-04 11:26:18 回复(0)
Mark
发表于 2019-09-01 10:48:21 回复(0)
yield();也不一定会导致线程停止执行吧
编辑于 2019-08-28 15:29:41 回复(0)
出错了?求解C
发表于 2019-08-27 23:30:48 回复(0)

c为啥?

发表于 2019-08-27 19:07:54 回复(0)
ACD
编辑于 2019-08-21 18:43:37 回复(0)