首页 > 试题广场 >

下列哪些情况下会导致线程中断或停止运行( &nb...

[不定项选择题]
下列哪些情况下会导致线程中断或停止运行(      )
  • 抛出InterruptedException异常
  • 线程调用了wait方法
  • 当前线程创建了一个新的线程
  • 高优先级线程进入就绪状态
A选项正确,Java中一般通过interrupt方法中断线程
B选项正确,线程使用了wait方法,会强行打断当前操作,进入阻塞(暂停)状态,然后需要notify方法或notifyAll方法才能进入就绪状态
C选项错误,新创建的线程不会抢占时间片,只有等当前线程把时间片用完,其他线程才有资格拿到时间片去执行。
D选项错误,调度算法未必是剥夺式的,而准备就绪但是还没有获得CPU,它的权限更高只能说明它获得CPU被执行的几率更大而已
发表于 2019-08-21 17:37:48 回复(18)
关于A选项
  • InterruptedException异常被捕获

貌似找到原题了
我怀疑是出题人翻译问题
英文原题A选项是:抛出Interruption异常,并没有说捕获,所以A会导致线程停止
编辑于 2021-06-05 12:35:08 回复(2)
《多选题》
发表于 2022-02-23 10:46:51 回复(0)
A 选项:Interrupt 确实会导致线程中断,但是既然捕获到异常就代表线程不会中断和停止 B 选项:线程调用 wait()方法,释放了锁,会强制导致当前正在执行的线程中断,需要 notify()或 notifyall()来“唤醒“ C 选项:当线程创建一个新的线程时,CPU 时间片不会剥夺当前线程运行的“权利” D 选项:当高优先级线程进入就绪状态,也需要等待当前线程的运行结束才可以继续运行,此时当前线程处于运行中 RUBBABLE 状态中的 READY 就绪态
发表于 2022-03-07 15:52:42 回复(0)
 public static void main(String[] args) {
        ExecutorService tpb  = Executors.newFixedThreadPool(3);

        tpb.execute(new Thread(()-> {
            System.out.println(" thread1 start...");
            try {
                throw  new InterruptedException();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("lambda thread1 continue start...");
        }
                ));
        tpb.execute(new Thread(()-> System.out.println("lambda thread2 start...")));
        tpb.execute(new Thread(()-> System.out.println("lambda thread3 start...")));

    }
A答案,异常捕获处理了,程序是继续执行的,题的问题吧,我如果在捕获代码里继续抛异常,程序是会中断的,如果做了处理,就会继续执行


这里还要继续处理,如果觉得我的回答有问题,希望回复
发表于 2020-01-04 09:14:37 回复(5)
标了个多选然后正确答案B?
发表于 2022-05-18 08:43:06 回复(1)
wait表示线程处于等待需要得到其他线程的通知才会继续执行
发表于 2019-08-21 12:16:25 回复(0)
多选题怎么又变成单选了?
发表于 2022-04-15 13:01:00 回复(0)
以下情况会导致线程中断或停止运行:
一、InterruptedException异常被捕获;
二、线程调用了wait方法。

以下方法不会中断线程或停止运行:
当前线程创建了一个新的线程(主线程中的子线程在运行,则主线程可能也在持续运行啊,如果关了主线程那子线程也无法继续执行了吧);
高优先级线程进入就绪状态(高优先级只是在分配时间片的时候有优先级吧,当线程已经在执行时,高优先级的也不能挤占啊)。
发表于 2021-05-06 18:49:45 回复(0)
多选题选一个? 给我们玩心理战🤨
发表于 2022-06-24 14:51:58 回复(1)
线程优先级高只能说明它获得cpu时间片的几率更大,而不是先于优先级低的线程先执行
发表于 2022-03-15 11:05:42 回复(0)
很多人对这个中断异常没有理解清楚,InterruptedException这个异常不是说让线程中断不运行的。这个异常很多时候是用作中断线程睡眠的。
例如wait(),sleep()方法等,都可能抛出这个异常,查看wait和sleep的源码,然后我们在线程的run()中对wait()和sleep()方法中可能抛出的InterruptedException进行try-catch处理,让线程继续运行的。
发表于 2021-12-20 13:34:39 回复(2)
A.InterruptedException异常被捕获 // 异常被捕获只要不继续抛不就可以继续运行了吗? 这个等着高人解答
B.线程调用了wait方法 // wait方法必须要在同步代码块或方法中由锁对象调用才有用, 不然就会抛异常. 当然如果抛异常了, 没有捕获肯定停止了, 如果生效了也就中断了, 所以这条无异议
C.当前线程创建了一个新的线程 // 创建新线程没有调用start()方法是不会运行的(调用start方法才会处于就绪状态), 而且就算运行也不会中断或停止线程, 因为线程怎么着也得把获得的cpu时间片运行完.
D.高优先级线程进入就绪状态 // 和C假设线程处于就绪状态时同理
编辑于 2020-01-07 18:35:47 回复(2)
a项捕获了不是继续运行吗
发表于 2019-12-09 08:49:23 回复(5)
中断或停止,应该是执行完,异常,stop,中断值那个吧
发表于 2019-08-22 08:07:04 回复(1)
这不是多选题吗
发表于 2023-04-26 07:55:20 回复(0)
我选了AB怎么还是错的
发表于 2022-08-19 13:05:13 回复(0)
A:错误。中断异常被捕获,程序继续运行。
B:正确。线程调用被锁定对象的wait方法(obj.wait()),线程进入monitor的休息区等待,直到有其他线程。线程从 RUNNABLE -->     WAITING。
    void wait( )
Causes the current thread to wait until another thread invokes the notify() method or the
notifyAll( ) method for this object.
译:导致当前的线程等待,直到其他线程调用此对象的notify( ) 方法或 notifyAll( ) 方法
C:错误。创建的新线程可能并未start()。
D:错误。可能是非抢占式进程调度算法。

感觉我写的还有待商榷,如有想法可回复。
发表于 2022-02-03 12:43:50 回复(0)
我觉得答案就是A;
B,线程调用wait方法。   wait方法不是Object的?
发表于 2021-11-19 14:35:27 回复(0)
我寻思着线程哪来的wait方法,线程对象有wait方法才对,B选项应该是线程在同步的情况下抢到的对象调用了wait方法,在该对象上活动的线程进入等待状态,且释放对象锁。
发表于 2021-02-09 12:04:30 回复(0)