首页 > 试题广场 >

下面那些情况可以终止当前线程的运行?

[单选题]
下面那些情况可以终止当前线程的运行?
  • 当一个优先级高的线程进入就绪状态时
  • 抛出一个异常时
  • 当该线程调用sleep()方法时
  • 当创建一个新线程时
推荐
B:pthread_clean_pop抛出一个例外,线程终止!也可以通过其他线程调用pthread_cancel()函数来终止另一个线程
A:并不是终止,而是抢占,进程是资源分配的最基本单位,同一个进程创建的不同线程共享这些资源。所以这些线程能使用的资源是有限的。当某一个线程优先级比较高时,它就会抢占其他线程的资源,导致其他线程没有资源可用,会造成阻塞,直到那个优先级高地线程使用完。

编辑于 2015-09-14 21:00:13 回复(4)
B
当一个优先级高的线程进入就绪状态时,它只是有较高的概率能够抢到CPU的执行权,不是一定就能抢到执行权,所以A错
抛出一个例外时,该线程就终止了,所以B正确
当前线程调用sleep()方法或者wait()方法时,只是暂时停止了该线程的运行,不是终止线程,注意题目说的是“终止”,就是完全停止,所以C错误
当创建一个新的线程时,该线程也加入到了抢占cpu执行权的队伍中,但是是否能抢到,并不清楚,和A的思想一样,所以D错误
发表于 2015-09-12 18:45:42 回复(9)
线程结束的三个原因:
1、run方法执行完成,线程正常结束
2、线程抛出一个未捕获的Exception或者Error
3、直接调用该线程的Stop方法结束线程(不建议使用,容易导致死锁)
发表于 2016-03-08 10:47:19 回复(2)
当以更高的优先级进入就绪态时,并不意味着获得了cpu资源,只是以更高的概率获得cpu资源进入运行态

发表于 2015-09-17 13:37:07 回复(0)
理解“终止当前线程的运行”和“线程的阻塞”和“线程就绪”
A   如果调度方式是抢占式,则当前进程会重新就绪等待调度;如果不是抢占式,则不理会优先级高的进程。
C   sleep之后,当前进程处于阻塞状态,等待阻塞结束重新进入就绪状态
D   不影响当前线程,

B  抛出例外,当前线程异常结束
发表于 2015-09-14 08:08:41 回复(0)
我觉得B也不对, 如果抛出的异常被捕获了, 线程并不会终止。
发表于 2018-11-06 15:10:50 回复(0)
抛出异常,没说不捕获异常,有点难以接受
发表于 2018-10-06 18:27:53 回复(0)

A并不是终止,是阻塞

发表于 2018-09-25 15:36:20 回复(0)
优先级高的线程,只是抢到cpu的概率高,而不是一定就能抢到 抛出一个异常程序会自动停止 调用sleep和wait方法只是让线程暂时停止,而不是终止程序的运行 当创建一个新线程的时候,该线程也会进入强资源阶段,但能否抢到也是不知道的
发表于 2024-10-16 07:27:10 回复(0)
Zlk头像 Zlk
题目感觉有问题啊,此处异常指的是在哪抛出呢,假如当前线程内不就不对吗
发表于 2019-06-24 23:11:01 回复(0)
抛出异常时
发表于 2019-05-07 00:55:35 回复(0)
线程结束的三个原因: 1、run方法执行完成,线程正常结束 2、线程抛出一个未捕获的Exception或者Error 3、直接调用该线程的Stop方法结束线程(不建议使用,容易导致死锁)
发表于 2019-03-25 07:51:39 回复(0)
只能选异常了,虽然也不是很准确的说法
发表于 2018-12-02 21:12:34 回复(0)
线程结束的三个原因:
1、run方法执行完成,线程正常结束
2、线程抛出一个未捕获的Exception或者Error
3、直接调用该线程的Stop方法结束线程(不建议使用,容易导致死锁)
发表于 2018-10-29 15:06:52 回复(0)
未捕获的异常才会导致线程终止,那如果捕获了不就不会终止了吗
发表于 2018-09-28 08:18:38 回复(0)
线程执行完毕的情况:
1.线程的run()方法执行完毕
2.线程抛出一个Exception或者Error
3.优先级更高或者平级的线程抢占
发表于 2018-09-09 09:54:53 回复(1)

终止与暂停的区别

发表于 2018-09-08 11:01:25 回复(0)
sleep操作可以使程序从运行态转为阻塞态,但不是终止当前线程的运行
线程终止运行的条件一般只有以下三个:
1、线程已经执行完run方法体中的内容,线程正常结束
2、线程抛出一个未捕获的Exception或Error
3、调用了线程的stop方法(不建议这样使用)
发表于 2018-07-31 20:26:09 回复(0)
线程抛出异常后线程不一定终止。。。。所以吧,我感觉不严谨,但是这四个选项中,也只有抛出异常才会有概率真正的终止线程。
发表于 2018-05-31 11:27:25 回复(0)
B 当一个优先级高的线程进入就绪状态时,它只是有较高的概率能够抢到CPU的执行权,不是一定就能抢到执行权,所以A错 抛出一个例外时,该线程就终止了,所以B正确 当前线程调用sleep()方法或者wait()方法时,只是暂时停止了该线程的运行,不是终止线程,注意题目说的是“终止”,就是完全停止,所以C错误 当创建一个新的线程时,该线程也加入到了抢占cpu执行权的队伍中,但是是否能抢到,并不清楚,和A的思想一样,所以D错误
发表于 2018-05-07 08:26:13 回复(0)
好好理解暂停和终止。。。
发表于 2017-10-23 18:12:20 回复(0)