SCJP考试中的线程题目分析

文章作者 100test 发表时间 2011:03:18 19:41:01
来源 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

相关文章


Java初期学者程序性能容易的问题测试
JAVA认证辅导:Java试题
Java面试题:第一锦
Java认证经典面试题目整理
SCJP考试中的线程题目分析
模拟试题:Java网络编程之URI、URL研究专题一
模拟试题:Java网络编程之URI、URL研究专题三
java程序员面试题及解答
J2EE面试题集锦
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛