当前位置:首页 >> IT/计算机 >>

SCJP题库 Module8


Module8-线程 线程
一,选择题 Question 1 Which two code fragments will execute the method doStuff() in a separate thread? (Choose two.) A. new Thread() { public void run() { doStuff(); } } B. new Thread() { public void start() { doStuff(); } } C. new Thread() { public void start() { doStuff(); } } .run(); D. new Thread() { public void run() { doStuff(); } } .start(); E. new Thread(new Runnable() { public void run() { doStuff(); } } ).run(); F. new Thread(new Runnable() { public void run() { doStuff(); } }).start(); Answer: DF Question 2 Given: 11. Runnable r = new Runnable() { 12. public void run() { 13. System.out.print("Cat"); 14. } 15. }; 16. Threadt=new Thread(r) { 17. public void run() { 18. System.out.print("Dog"); 19. } 20. }; 21. t.start(); What is the result? A. Cat B. Dog C. Compilation fails. D. The code runs with no output. E. An exception is thrown at runtime. Answer: B

1

Question 3 Given: 1. public class Threads3 implements Runnable { 2. public void run() { 3. System.out.print("running"); 4. } 5. public static void main(String[] args) { 6. Thread t = new Thread(new Threads3()); 7. t.run(); 8. t.run(); 9. t.start(); 10. } 11. } What is the result? A. Compilation fails. B. An exception is thrown at runtime. C. The code executes and prints "running". D. The code executes and prints "runningrunning". E. The code executes and prints "runningrunningrunning". Answer: E Question 4 Click the Exhibit button: 1. public class Threads 1 { 2. Int x=0; 3. public class Runner implements Runnable { 4. public void run() { 5. int current = 0; 6. for(int i=0;i<4;i++){ 7. current = x; 8. System.out.print(current + ", "); 9. x = current + 2; 10. } 11. } 12. } 13. 14. public static void main(String[] args) { 15. new Threads1().go(); 16. } 17. 18. public void go() { 19. Runnable r1 = new Runner(); 20. new Thread(r1).start(); 21. new Thread(r1 ).start(); 22. } 23. } Which two are possible results? (Choose two.)

2

A. 0, 2, 4, 4, 6, 8, 10, 6, B. 0, 2, 4, 6, 8, 10, 2, 4, C. 0, 2, 4, 6, 8, 10, 12, 14, D. 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, E. 0, 2, 4, 6, 8, 10, 12, 14, 0, 2, 4, 6, 8, 10, 12, 14, Answer: AC Question 5 Given: 1. public class Threads4 { 2. public static void main (String[] args) { 3. new Threads4().go(); 4. } 5. public void go() { 6. Runnable r = new Runnable() { 7. public void run() { 8. System.out.print("foo"); 9. } 10. }; 11. Thread t = new Thread(r); 12. t.start(); 13. t.start(); 14. } 15. } What is the result? A. Compilation fails. B. An exception is thrown at runtime. C. The code executes normally and prints "foo". D. The code executes normally, but nothing is printed. Answer: B Question 6 Given: 1. public class Threads5 { 2. public static void main (String[] args) { 3. new Thread(new Runnable() { 4. public void run() { 5. System.out.print("bar"); 6. }}).start(); 7. } 8. } What is the result? A. Compilation fails. B. An exception is thrown at runtime. C. The code executes normally and prints "bar". D. The code executes normally, but nothing prints. Answer: C Question 7

3

Given: 1. public class Threads2 implements Runnable { 2. 3. public void run() { 4. System.out.println("run."); 5. throw new RuntimeException("Problem"); 6. } 7. public static void main(String[] args) { 8. Thread t = new Thread(new Threads2()); 9. t.start(); 10. System.out.println("End of method."); 11. } 12. } Which two can be results? (Choose two.) A. java.lang.RuntimeException: Problem B. run. java.lang.RuntimeException: Problem C. End of method. java.lang.RuntimeException: Problem D. End of method. run. java.lang.RuntimeException: Problem E. run. java.lang.RuntimeException: Problem End of method. Answer: DE Question 8 Click the Exhibit button. Given: 10. public class Starter extends Thread { 11. private int x= 2; 12. public static void main(String[] args) throws Exception { 13. new Starter().makeItSo(); 14. } 15. public Starter() { 16. x=5; 17. start(); 18. } 19. public void makeItSo() throws Exception { 20. join(); 21. x=x- 1; 22. System.out.println(x); 23. } 24. public void run() { x *= 2; } 25. } What is the output if the main() method is rum?

4

A. 4 B. 5 C. 8 D. 9 E. Compilation fails. F. An exception is thrown at runtime. G. It is impossible to determine for certain. Answer: D Question 9 Given: 1. public class TestOne { 2. public static void main (String[] args) throws Exception { 3. Thread.sleep(3000); 4. System.out.println("sleep"); 5. } 6. } What is the result? A. Compilation fails. B. An exception is thrown at runtime. C. The code executes normally and prints "sleep". D. The code executes normally, but nothing is printed. Answer: C Question 10 Given: 1. public class TestOne implements Runnable { 2. public static void main (String[] args) throws Exception { 3. Thread t = new Thread(new TestOne()); 4. t.start(); 5. System.out.print("Started"); 6. t.join(); 7. System.out.print("Complete"); 8. } 9. public void run() { 10. for (int i= 0; i< 4; i++) { 11. System.out.print(i); 12. } 13. } 14. } What can be a result? A. Compilation fails. B. An exception is thrown at runtime. C. The code executes and prints "StartedComplete". D. The code executes and prints "StartedComplete0123". E. The code executes and prints "Started0l23Complete". Answer: E Question 11

5

Click the Exhibit button. 1. class Computation extends Thread { 2. 3. private int num; 4. private boolean isComplete; 5. private int result; 6. 7. public Computation(int num) { this.num = num; } 8. 9. public synchronized void run() { 10. result = num * 2; 11. isComplete = true; 12. notify(); 13. } 14. 15. public synchronized int getResult() { 16. while (!isComplete) { 17. try { 18. wait(); 19. } catch (InterruptedException e) { } 20. } 21. return result; 22. } 23. 24. public static void main(String[] args) { 25. Computation[] computations = new Computation [4]; 26. for (int i = 0; i< computations.length; i++) { 27. computations[i] = new Computation(i); 28. computations[i] .start(); 29. } 30. for (Computation c : computations) 31. System.out.print(c.getResult() +" "); 32. } 33. } What is the result? A. The code will deadlock. B. The code may run with no output. C. An exception is thrown at runtime. D. The code may run with output "0 6". E. The code may run with output "2 0 6 4". F. The code may ruin with output "0 2 4 6". Answer: F Question 12 Given: 7. void waitForSignal() { 8. Object obj = new Object();

6

9. synchronized (Thread.currentThread()) { 10. obj.wait(); 11. obj.notify(); 12. } 13. } Which is true? A. This code may throw an InterruptedException. B. This code may throw an IllegalStateException. C. This code may throw a TimeoutException after ten minutes. D. This code will not compile unless "obj.wait()" is replaced with "((Thread) obj).wait()". E. Reversing the order of obj.wait() and obj.notify() may cause this method to complete normally. F. A call to notify() or notifyAll() from another thread may cause this method to complete normally. Answer: A Question 13 Given: foo and bar are public references available to many other threads. foo refers to a Thread and bar is an Object. The thread foo is currently executing bar.wait(). From another thread, which statement is the most reliable way to ensue that foo will stop executing wait()? A. foo.notify(); B. bar.notify(); C. foo.notifyAll(); D. Thread.notify(); E. bar.notiFYAll(); F. Object.notify(); Answer: E Question 14 Click the Exhibit button. Given: 1. public class TwoThreads { 23 . private static Object resource = new Object(); 4. 5. private static void delay(long n) { 6. try { Thread.sleep(n); } 7. catch (Exception e) { System.out.print("Error "); } 8. }

7

9 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.

public static void main(String[] args) { System.out.print("StartMain "); new Thread1().start(); delay(1000); Thread t2 = new Thread2(); t2.start(); delay(1000); t2.interrupt() delay(1000); System.out.print("EndMain "); } static class Thread1 extends Thread { public void run() { synchronized (resource) { System.out.print("Startl ");

26. delay(6000); 27. System.out.print("End1 "); 28. } 29. } 30. } 31. 32. static class Thread2 extends Thread { 33. public void run() { 34. synchronized (resource) { 35. System.out.print("Start2 "); 36. delay(2000); 37. System.out.print("End2 "); 38. } 39. } 40. } 41. } Assume that sleep(n) executes in exactly m milliseconds, and all other code executes in an insignificant amount of time. What is the output if the main() method is run? A. Compilation fails. B. Deadlock occurs. C. StartMain Start1 Error EndMain End1 D. StartMain Start1 EndMain End1 Start2 End2 E. StartMain Start1 Error Start2 EndMain End2 End1 F. StartMain Start1 Start2 Error End2 EndMain End1 G. StartMain Start1 EndMain End1 Start2 Error End2 Answer: G

8

Question 15 Given: public class NamedCounter { private final String name; private int count; public NamedCounter(String name) { this.name = name; } public String getName() { return name; } public void increment() { coount++; } public int getCount() { return count; } public void reset() { count = 0; } } Which three changes should be made to adapt this class to be used safely by multiple threads? (Choose three.) A. declare reset() using the synchronized keyword B. declare getName() using the synchronized keyword C. declare getCount() using the synchronized keyword D. declare the constructor using the synchronized keyword E. declare increment() using the synchronized keyword Answer: ACE Question 16 Click the Exhibit button. 1. import java.util.*; 2. 3. public class NameList { 4. private List names = new ArrayList(); 5. public synchronized void add(String { names.add(name); } 6. public synchronized void printAll() { 7. for (int i = 0; i <names.size(); i++) { 8. System.out.print(names.get(i) +" "); 9. } 10. } 11. public static void main(String[] args) { 12. final NameList sl = new NameList(); 13.for(int i=0;i<2;i++) { 14. new Thread() { 15. public void run() { 16. sl.add("A"); 17. sl.add("B"); 18. sl.add("C"); 19. sl.printAll(); 20. } 21. }.start(); 22. } 23. }

name)

9

24. } Which two statements are true if this class is compiled and run? (Choose two.) A. An exception may be thrown at runtime. B. The code may run with no output, without exiting. C. The code may run with no output, exiting normally. D. The code may rum with output "A B A B C C ", then exit. E. The code may rum with output "A B C A B C A B C ", then exit. F. The code may ruin with output "A A A B C A B C C ", then exit. G. The code may ruin with output "A B C A A B C A B C ", then exit. Answer: EG Question 17 Given: 1. public class TestFive { 2. private int x; 3. public void foo() { 4 int current = x; 5. x = current + 1; 6. } 7. public void go() { 8. for(int i=0;i<5;i++) { 9. new Thread() { 10. public void run() { 11. foo(); 12. System.out.print(x + ", "); 13. } }.start(); 14. }}} Which two changes, taken together, would guarantee the output: 1, 2, 3, 4, 5, ? (Choose two.) A. Move the line 12 print statement into the foo() method. B. Change line 7 to public synchronized void go() {. C. Change the variable declaration on line 3 to private volatile int x;. D. Wrap the code inside the foo() method with a synchronized( this ) block. E. Wrap the for loop code inside the go() method with a synchronized block synchronized(this) { // for loop code here }. Answer: AD Question 18 Which three will compile and rim without exception? (Choose three.) A. private synchronized Object o;

10

B. void go() { synchronized() { /* code here */ } } C. public synchronized void go() { /* code here */ } D. private synchronized(this) void go() { /* code here */ } E. void go() { synchronized(Object.class) { /* code here */ } } F. void go() { Object o = new Object(); synchronized(o) { /* code here */ } } Answer: CEF Question 19 Given: 1. public class TestSeven extends Thread { 2. private static int x; 3. public synchronized void doThings() { 4. int current = x; 5. current++; 6. x = current; 7. } 8. public void run() { 9. doThings(); 10. } 1 1.} Which is true? A. Compilation fails. B. An exception is thrown at runtime. C. Synchronizing the run() method would make the class thread-safe. D. The data in variable "x" are protected from concurrent access problems. E. Declaring the doThings() method as static would make the class thread-safe. F. Wrapping the statements within doThings() in a synchronized(new Object()) { } block would make the class thread-safe. Answer: E Question 20 Click the Exhibit button. 10. public class Transfers { 11. public static void main(String[] args) throws Exception { 12. Record r1 = new Record(); 13. Record r2 = new Record(); 14. doTransfer(r1, r2, 5);

11

15. doTransfer(r2, r1, 2); 16. doTransfer(r1, r2, 1); 17. // print the result 18. System.out.println("rl = " + r1.get() +", r2=" + r2.get()); 19. } 20. private static void doTransfer( 21. final Record a, final Record b, final int amount) { 22. Thread t = new Thread() { 23. public void run() { 24. new Clerk().transfer(a, b, amount); 25. } 26. }; 27. t.start(); 28. } 29. } 30. class Clerk { 31. public synchronized void transfer(Record a, Record b, int amount){ 32. synchronized (a) { 33. synchronized (b) { 34. a.add(-amount); 35. b.add(amount); 36. } 37. } 38. } 39. } 40. class Record { 41.int num=10; 42. public int get() { return num; } 43. public void add(int n) { num = num + n; } 44. } If Transfers.main() is run, which three are true? (Choose three.) A. The output may be "r1 = 6, r2 = 14". B. The output may be "r1 = 5, r2 = 15". C. The output may be "r1 = 8, r2 = 12". D. The code may run (and complete) with no output. E. The code may deadlock (without completing) with no output. F. M IllegalStateException or InterruptedException may be thrown at runtime. Answer: ABE 二,拖拽题: 拖拽题: Question 1: :

12

Answer: started ran interrupting ended no more output Question 2: :

13

Answer: t.run(); t.join(); t.doIt(); Question 3: :

Answer:

14

public class Flags2 { private boolean isReady=false; public synchronized void produce(){ isReady=true; notifyAll(); } public synchronized void consume(){ while(!isReady){ try{ wait(); }catch(Exception ex){} }i sReady=false; } } Question 4:

Answer: run()------------------------java.lang.Thread wait()-----------------------java.lang.Object notify()---------------------java.lang.Object sleep()----------------------java.lang.Thread start()-----------------------java.lang.Thread join()-----------------------java.lang.Thread

15

相关文章:
SCJP题库 Module3
SCJP题库 Module1 SCJP题库 Module2 SCJP题库 Module4 SCJP题库 Module5 SCJP题库 Module6 SCJP题库 Module7 SCJP题库 Module81...
SCJP认证考试题库1
SCJP认证考试题库3 36页 1财富值 SCJP题库 Module1 21页 20财富值 SCJP试题...0,2,4,4,6,8,10,6, B. 0,2,4,6,8,10,2,4, C. 0,2,4,6,8...
SCJP历年考题
SCJP历年考题_计算机软件及应用_IT/计算机_专业资料。...7. //insert code here 8. ) Which two are valid...科目三实际道路驾驶考试注意事项 驾考新题抢先版文...
SCJP题库_Module1
SCJP题库_Module1_IT认证_资格考试/认证_教育专区。SCJP题库_Module1 很有帮助...(); 23. snoog = null; 8 24. // more code here 25. } Which ...
SCJP Exam Module1
SCJP题库 Module1 21页 20财富值 SCJP Exam Module7 10页 免费 SCJP Exam Module4 4页 免费 SCJP Exam Module2 8页 免费 SCJP Exam Module8 6页 免费 SCJ...
【 Garfield 的 SCJP 阅读笔记 】
32页 8财富值 SCJP题库 Module6 10页 20财富值 scjp官方题库 50页 5财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行...
SCJP题库 Module5
SCJP题库 Module1 SCJP题库 Module2 SCJP题库 Module3 SCJP题库 Module4 SCJP题库 Module6 SCJP题库 Module7 SCJP题库 Module81...
SCJP题库 希望可以帮助你
("The quantity is " + quant); } Question 3: 1 8 Answer: package com...scjp 310-065认证题库 25页 2下载券 SCJP题库 Module2 22页 7下载券 喜欢...
SCJP题库 带达内考点分析⑤_⑧答案
SCJP题库 带达内考点分析⑤_⑧答案 隐藏>> ANSWER Module 5 1.BCD 2. E 3.BDE 4.C 5.D 6.D 7.D 8.B 拖拽题 1. Answer: String path = ""; ...
scjp模拟试题(二)_练习
SCJP题库 Module4 15页 20财富值如要投诉违规内容,请到百度文库投诉中心;如要...public static void main (String args[]){ 8. test test = new test();...
更多相关标签: