SCJP考试中的线程题目分析Java认证考试

文章作者 100test 发表时间 2009:07:07 21:13:06
来源 100Test.Com百考试题网


  1:
  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。同55题
  2:
  public class SyncTest{
  public static void main(String[] args) {
  final StringBuffer s1= new StringBuffer().
  final StringBuffer s2= new StringBuffer().
  new Thread ()  {
  public void run() {
  synchronized(s1) {
  s2.append(“A”).
  synchronized(s2) {
  s2.append(“B”).
  System.out.print(s1).
  System.out.print(s2).
  }
  }
  }
  }.start().
  new Thread() {
  public void run() {
  synchronized(s2) {
  s2.append(“C”).
  synchronized(s1) {
  s1.append(“D”).
  System.out.print(s2).
  System.out.print(s1).
  }
  }
  }
  }.start().
  }
  }
  Which two statements are true? (Choose Two)
  A. The program prints “ABBCAD”
  B. The program prints “CDDACB”
  C. The program prints “ADCBADBC”
  D. The output is a non-deterministic point because of a possible deadlock condition
  E. The output is dependent on the threading model of the system the program is running on.
  Answer:DE
  3:
  What will happen when you attempt to compile and run the following code?
  public class Test{
  int i = 0.
  public static void main(String argv[]) {
  Test t = new Test().
  t.myMethod().
  }
  public void myMethod(){
  while(true) {
  try {  wait().
  }catch (InterruptedException e) {}
  i .
  }
  }
  }
  A. Compile time error, no matching notify within the method.
  B. Compile and run but an infinite looping of the while method.
  C. Compilation and run without any output.
  E. Runtime Exception "IllegalMonitorStatException".
  Answer: E
  Note: The wait/notify protocol can only be used within code that is synchronized. In this case calling code does not have a lock on the object(not synchronized) and will thus cause an Exception at runtime.
  4:
  1.10 What is the result of compiling and executing the following code?
  public class ThreadTest extends Thread {
  public void run() {
  System.out.println("In run").
  yield().  System.out.println("Leaving run").
  }
  public static void main(String args []) {
  (new ThreadTest()).start().
  }
  }
  A. The code fails to compile in the main() method.
  B. The code fails to compile in the run() method.
  C. Only the text "In run" will be displayed.
  D. The text "In run" followed by "Leaving run" will be displayed.
  E. The code compiles correctly, but nothing is displayed.
  Answer: D

相关文章


SCJP考试中的线程题目分析Java认证考试
IBMJava英文面试题(附参考答案)Java认证考试
JAVA认证历年真题:SCJP考试真题和解析(1)Java认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛