Which two CANNOT directly cause a thread to stop executing? (Choose Two) A.Existing from a synchronized block
B.Calling the wait method on an object
C.Calling notify method on an object
D.Calling read method on an InputStream object
E.Calling the SetPriority method on a Thread object Answer:AC。除了B外,其它选项,我都不明白,尴尬....求助,感激流涕.

解决方案 »

  1.   

    判断线程是否是停止的   就看线程里的代码是否有在运行a 跳出同步代码块
    b 调用wait方法
    c 调用notify方法
    d 调用读取流的方法
    e 设置线程的优先权换成中文的    明白了没?
      

  2.   

    A 看着真别扭,英语中有exist from这个短语吗?只有exist in和exit from吧?
    C notify是用来唤醒线程的,或许唤醒某线程导致另一线程停止,但算不上直接
    D API中对InputStream.read()的解释有一句话:在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。因此可以直接停止某线程执行
    E 设置优先级可以直接停止某线程执行,比如你将其优先级设置很低,高优先级的就会先去执行
      

  3.   

    E.Calling the SetPriority method on a Thread object 
    更改线程优先级B.Calling the wait method on an object
    线程等待D.Calling read method on an InputStream object 
    read()方法,在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。
      

  4.   

    判断线程是否是停止的  就看线程里的代码是否有在运行 这句话很直观很有道理
    a 跳出同步代码块 (如果一个线程想进入一个已经被另外一个线程占用得同步代码块,这个线程会停止,但是这里说的是跳出)
    b 调用wait方法 (他能使当前线程停止,等待别人调用notify方法)
    c 调用notify方法 (放另外一个调用了wait方法得线程继续执行,自己也可以继续执行)
    d 调用输入流的读取方法 (这是典型得阻塞方法,线程等待知道确实有东西可读得时候才会去读)
    e 设置优先级会导致线程停止? 这个我不知道了,期待解答```,或许是因为优先级改变了,JVM要重新选择优先级高得先执行,所以会短暂停止