MCQOPTIONS
Saved Bookmarks
This section includes 62 Mcqs, each offering curated multiple-choice questions to sharpen your Java Programming knowledge and support exam preparation. Choose a topic below to get started.
| 1. |
Under which conditions will a currently executing thread stop? |
| A. | 1 and 3 |
| B. | 2 and 4 |
| C. | 1 and 4 |
| D. | 2 and 3 |
| Answer» C. 1 and 4 | |
| 2. |
Which method must be defined by a class implementing the interface? |
| A. | void run() |
| B. | public void run() |
| C. | public void start() |
| D. | void run(int priority) |
| Answer» C. public void start() | |
| 3. |
Which two can be used to create a new Thread? |
| A. | 1 and 2 |
| B. | 2 and 3 |
| C. | 1 and 4 |
| D. | 3 and 4 |
| Answer» D. 3 and 4 | |
| 4. |
Which two statements are true? |
| A. | 1 and 2 |
| B. | 3 and 5 |
| C. | 4 and 6 |
| D. | 1 and 3 |
| Answer» D. 1 and 3 | |
| 5. |
The following block of code creates a Thread using a Runnable target: Which of the following classes can be used to create the target, so that the preceding code compiles correctly? |
| A. | public class MyRunnable extends Runnable{public void run(){}} |
| B. | public class MyRunnable extends Object{public void run(){}} |
| C. | public class MyRunnable implements Runnable{public void run(){}} |
| D. | public class MyRunnable implements Runnable{void run(){}} |
| Answer» D. public class MyRunnable implements Runnable{void run(){}} | |
| 6. |
Which class or interface defines the , ,and methods? |
| A. | Object |
| B. | Thread |
| C. | Runnable |
| D. | Class |
| Answer» B. Thread | |
| 7. |
which of these will create and start this thread? |
| A. | new Runnable(MyRunnable).start(); |
| B. | new Thread(MyRunnable).run(); |
| C. | new Thread(new MyRunnable()).start(); |
| D. | new MyRunnable().start(); |
| Answer» D. new MyRunnable().start(); | |
| 8. |
Which of the following line of code is suitable to start a thread ? |
| A. | Thread t = new Thread(X); |
| B. | Thread t = new Thread(X); t.start(); |
| C. | X run = new X(); Thread t = new Thread(run); t.start(); |
| D. | Thread t = new Thread(); x.run(); |
| Answer» D. Thread t = new Thread(); x.run(); | |
| 9. |
What will be the output of the program? public class SyncTest { public static void main (String [] args) { Thread t = new Thread() { Foo f = new Foo(); public void run() { f.increase(20); } }; t.start(); } } class Foo { private int data = 23; public void increase(int amt) { int x = data; data = x + amt; } } and assuming that data must be protected from corruption, what—if anything—can you add to the preceding code to ensure the integrity of data? |
| A. | Synchronize the run method. |
| B. | Wrap a synchronize(this) around the call to f.increase(). |
| C. | The existing code will cause a runtime exception. |
| D. | Synchronize the increase() method |
| Answer» E. | |
| 10. |
Thread synchronization is required because ___________ |
| A. | all threads of a process share the same address space |
| B. | all threads of a process share the same global variables |
| C. | all threads of a process can share the same files |
| D. | all of the mentioned |
| Answer» E. | |
| 11. |
Termination of the process terminates ___________ |
| A. | first thread of the process |
| B. | first two threads of the process |
| C. | all threads within the process |
| D. | no thread within the process |
| Answer» D. no thread within the process | |
| 12. |
The jacketing technique is used to ___________ |
| A. | convert a blocking system call into non blocking system call |
| B. | create a new thread |
| C. | communicate between threads |
| D. | terminate a thread |
| Answer» B. create a new thread | |
| 13. |
The time required to create a new thread in an existing process is ___________ |
| A. | greater than the time required to create a new process |
| B. | less than the time required to create a new process |
| C. | equal to the time required to create a new process |
| D. | none of the mentioned |
| Answer» C. equal to the time required to create a new process | |
| 14. |
If one thread opens a file with read privileges then ___________ |
| A. | other threads in the another process can also read from that file |
| B. | other threads in the same process can also read from that file |
| C. | any other thread can not read from that file |
| D. | all of the mentioned |
| Answer» C. any other thread can not read from that file | |
| 15. |
A process can be ___________ |
| A. | single threaded |
| B. | multithreaded |
| C. | both single threaded and multithreaded |
| D. | none of the mentioned |
| Answer» D. none of the mentioned | |
| 16. |
What will be the output after compiling and executing the following code?public class Test implements Runnable{public static void main(String[] args) throws InterruptedException{Thread a = new Thread(new Test());a.start();System.out.print("Begin");a.join();System.out.print("End");}public void run(){System.out.print("Run");}} |
| A. | ompilation fails. |
| B. | n exception is thrown at runtime. |
| C. | BeginRunEnd" is printed. |
| D. | BeginEndRun" is printed. |
| E. | BeginEnd" is printed. |
| Answer» D. BeginEndRun" is printed. | |
| 17. |
Predict the output:public class Test extends Thread{private int i;public void run(){i++;}public static void main(String[] args){Test a = new Test();a.run();System.out.print(a.i);a.start();System.out.print(a.i);}} |
| A. | rints |
| B. | rints |
| C. | rints |
| D. | ompiler error |
| E. | llegalThreadStateException is thrown |
| Answer» D. ompiler error | |
| 18. |
What is the output for the below code ?class A implements Runnable{public void run(){System.out.println(Thread.currentThread().getName());}}1. public class Test{2.public static void main(String... args){3.A a = new A();4.Thread t = new Thread(a);5.t.setName("good");6.t.start();7.}8. } |
| A. | ood |
| B. | ull |
| C. | ompilation fails with an error at line 5 |
| D. | ompilation succeed but Runtime Exception |
| E. | one of these |
| Answer» B. ull | |
| 19. |
What is the output for the below code ?public class Test extends Thread{public static void main(String argv[]){Test t = new Test();t.run();}public void start(){for(int i = 0; i < 10; i++){System.out.println("Value of i = " + i);}}} |
| A. | compile time error indicating that no run method is defined for the Thread class |
| B. | run time error indicating that no run method is defined for the Thread class |
| C. | lean compile and at run time the values 0 to 9 are printed out |
| D. | lean compile but no output at runtime |
| E. | one of these |
| Answer» E. one of these | |
| 20. |
Given the code. What will be the result?public class Test implements Runnable{public static void main(String[] args) throws InterruptedException{Thread a = new Thread(new Test());a.start();System.out.print("Begin");a.join();System.out.print("End");}public void run(){System.out.print("Run");}} |
| A. | ompilation fails. |
| B. | n exception is thrown at runtime. |
| C. | BeginRunEnd" is printed. |
| D. | BeginEndRun" is printed. |
| E. | BeginEnd" is printed. |
| Answer» D. BeginEndRun" is printed. | |
| 21. |
What will be output of the following program code?public class Test implements Runnable{public void run(){System.out.print("go");}public static void main(String arg[]) {Thread t = new Thread(new Test());t.run();t.run();t.start();}} |
| A. | ompilation fails. |
| B. | n exception is thrown at runtime. |
| C. | go" is printed |
| D. | gogogo" is printed |
| E. | gogo" is printed |
| Answer» E. gogo" is printed | |
| 22. |
What will happen when you attempt to compile and run the following code?class A implements Runnable{public void run(){System.out.println("run-A");}}1. public class Test{2.public static void main(String argv[]){3.A a = new A();4.Thread t = new Thread(a);5.System.out.println(t.isAlive());6.t.start();7.System.out.println(t.isAlive());8.}9. } |
| A. | alse run-A true |
| B. | alse run-A false |
| C. | rue run-A true |
| D. | ompilation fails due to an error on line 7 |
| E. | one of these |
| Answer» B. alse run-A false | |
| 23. |
What will be the output?class A extends Thread{public void run(){for(int i=0; i |
| A. | 0 |
| B. | ompilation error, class A has no start method |
| C. | 1 |
| D. | ompilation succeed but runtime exception |
| E. | one of these |
| Answer» D. ompilation succeed but runtime exception | |
| 24. |
Predict the output:class A implements Runnable{public void run(){try{for(int i=0;i |
| A. | A A A B B B B |
| B. | B A B A B A B |
| C. | utput order is not guaranteed |
| D. | ompilation succeed but Runtime Exception |
| E. | one of these |
| Answer» B. B A B A B A B | |
| 25. |
What will happen after compiling and running following code?class A implements Runnable{public void run(){System.out.println("run-a");}}1. public class Test{2.public static void main(String... args){3.A a = new A();4.Thread t = new Thread(a);5.t.start();6.t.start();7.}8. } |
| A. | un-a |
| B. | un-a run-a |
| C. | ompilation fails with an error at line 6 |
| D. | ompilation succeed but Runtime Exception |
| E. | one of these |
| Answer» E. one of these | |
| 26. |
What will happen when you attempt to compile and run the following code?1. public class Test extends Thread{2.public static void main(String argv[]){3.Test t = new Test();4.t.run();5.t.start();6.}7.public void run(){8.System.out.println("run-test");9.}10. } |
| A. | un-test run-test |
| B. | un-test |
| C. | ompilation fails due to an error on line 4 |
| D. | ompilation fails due to an error on line 7 |
| E. | one of these |
| Answer» B. un-test | |
| 27. |
What will be the output?class One extends Thread{ public void run(){for(int i=0; i |
| A. | 0 |
| B. | ompilation Error |
| C. | 1 |
| D. | one of these |
| Answer» D. one of these | |
| 28. |
Analyze the following code:public class Test implements Runnable{public static void main(String[] args){Test t = new Test();}public Test(){Thread t = new Thread(this);t.start();}public void run(){System.out.println("test");}} |
| A. | he program has a compilation error because t is defined in both the main() method and the constructor Test(). |
| B. | he program compiles fine, but it does not run because you cannot use the keyword this in the constructor. |
| C. | he program compiles and runs and displays nothing. |
| D. | he program compiles and runs and displays test. |
| Answer» E. | |
| 29. |
Analyze the following code:public class Test implements Runnable{public static void main(String[] args){Test t = new Test();t.start();}public void run() { }} |
| A. | he program does not compile because the start() method is not defined in the Test class. |
| B. | he program compiles, but it does not run because the start() method is not defined. |
| C. | he program compiles, but it does not run because the run() method is not implemented. |
| D. | he program compiles and runs fine. |
| Answer» B. he program compiles, but it does not run because the start() method is not defined. | |
| 30. |
Analyze the following code:public abstract class Test implements Runnable{public void doSomething() { };} |
| A. | he program will not compile because it does not implement the run() method. |
| B. | he program will not compile because it does not contain abstract methods. |
| C. | he program compiles fine. |
| D. | one of the above |
| Answer» D. one of the above | |
| 31. |
What will be the output of the following program code?public class Test implements Runnable{public static void main(String[] args){Thread t = new Thread(this);t.start();}public void run(){System.out.println("test");}} |
| A. | he program does not compile because this cannot be referenced in a static method. |
| B. | he program compiles fine, but it does not print anything because t does not invoke the run() method |
| C. | he program compiles and runs fine and displays test on the console. |
| D. | one of the above |
| Answer» B. he program compiles fine, but it does not print anything because t does not invoke the run() method | |
| 32. |
Assume the following method is properly synchronized and called from a thread A on an object B: wait(2000) After calling this method, when will the thread A become a candidate to get another turn at the CPU? |
| A. | After thread A is notified, or after two seconds |
| B. | After the lock on B is released, or after two seconds. |
| C. | Two seconds after thread A is notified. |
| D. | Two seconds after lock B is released. |
| Answer» B. After the lock on B is released, or after two seconds. | |
| 33. |
What will be the output of the program? public class ThreadTest extends Thread { public void run() { System.out.println("In run"); yield(); System.out.println("Leaving run"); } public static void main(String []argv) { (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 |
| Answer» E. | |
| 34. |
What will be the output of the program? public class ThreadDemo { private int count = 1; public synchronized void doSomething() { for (int i = 0; i < 10; i++) System.out.println(count++); } public static void main(String[] args) { ThreadDemo demo = new ThreadDemo(); Thread a1 = new A(demo); Thread a2 = new A(demo); a1.start(); a2.start(); } } class A extends Thread { ThreadDemo demo; public A(ThreadDemo td) { demo = td; } public void run() { demo.doSomething(); } } |
| A. | It will print the numbers 0 to 19 sequentially |
| B. | It will print the numbers 1 to 20 sequentially |
| C. | It will print the numbers 1 to 20, but the order cannot be determined |
| D. | The code will not compile. |
| Answer» C. It will print the numbers 1 to 20, but the order cannot be determined | |
| 35. |
What will be the output of the program? public class WaitTest { public static void main(String [] args) { System.out.print("1 "); synchronized(args) { System.out.print("2 "); try { args.wait(); /* Line 11 */ } catch(InterruptedException e){ } } System.out.print("3 "); } } |
| A. | It fails to compile because the IllegalMonitorStateException of wait() is not dealt with in line 11. |
| B. | 1 2 3 |
| C. | 1 3 |
| D. | 1 2 |
| Answer» E. | |
| 36. |
What will be the output of the program? class s implements Runnable { int x, y; public void run() { for(int i = 0; i < 1000; i++) synchronized(this) { x = 12; y = 12; } System.out.print(x + " " + y + " "); } public static void main(String args[]) { s run = new s(); Thread t1 = new Thread(run); Thread t2 = new Thread(run); t1.start(); t2.start(); } } |
| A. | DeadLock |
| B. | It print 12 12 12 12 |
| C. | Compilation Error |
| D. | Cannot determine output. |
| Answer» C. Compilation Error | |
| 37. |
What will be the output of the program? class MyThread extends Thread { public static void main(String [] args) { MyThread t = new MyThread(); /* Line 5 */ t.run(); /* Line 6 */ } public void run() { for(int i=1; i < 3; ++i) { System.out.print(i + ".."); } } } |
| A. | This code will not compile due to line 5. |
| B. | This code will not compile due to line 6. |
| C. | 1..2.. |
| D. | 1..2..3.. |
| Answer» D. 1..2..3.. | |
| 38. |
What will be the output of the program? class MyThread extends Thread { public static void main(String [] args) { MyThread t = new MyThread(); Thread x = new Thread(t); x.start(); /* Line 7 */ } public void run() { for(int i = 0; i < 3; ++i) { System.out.print(i + ".."); } } } |
| A. | Compilation fails. |
| B. | 1..2..3.. |
| C. | 0..1..2..3.. |
| D. | 0..1..2.. |
| Answer» E. | |
| 39. |
What will be the output of the program? public class Test { public static void main (String [] args) { final Foo f = new Foo(); Thread t = new Thread(new Runnable() { public void run() { f.doStuff(); } }); Thread g = new Thread() { public void run() { f.doStuff(); } }; t.start(); g.start(); } } class Foo { int x = 5; public void doStuff() { if (x < 10) { // nothing to do try { wait(); } catch(InterruptedException ex) { } } else { System.out.println("x is " + x++); if (x >= 10) { notify(); } } } } |
| A. | The code will not compile because of an error on notify(); of class Foo. |
| B. | The code will not compile because of some other error in class Test. |
| C. | An exception occurs at runtime. |
| D. | It prints "x is 5 x is 6". |
| Answer» D. It prints "x is 5 x is 6". | |
| 40. |
What will be the output of the program? public class SyncTest { public static void main (String [] args) { Thread t = new Thread() { Foo f = new Foo(); public void run() { f.increase(20); } }; t.start(); } } class Foo { private int data = 23; public void increase(int amt) { int x = data; data = x + amt; } } and assuming that data must be protected from corruption, what—if anything—can you add to the preceding code to ensure the integrity of data? |
| A. | Synchronize the run method. |
| B. | Wrap a synchronize(this) around the call to f.increase(). |
| C. | The existing code will cause a runtime exception. |
| D. | Synchronize the increase() method |
| Answer» E. | |
| 41. |
class Test { public static void main(String [] args) { printAll(args); } public static void printAll(String[] lines) { for(int i = 0; i < lines.length; i++) { System.out.println(lines[i]); Thread.currentThread().sleep(1000); } } } the static method Thread.currentThread() returns a reference to the currently executing Thread object. What is the result of this code? |
| A. | Each String in the array lines will output, with a 1-second pause. |
| B. | Each String in the array lines will output, with no pause in between because this method is not executed in a Thread. |
| C. | Each String in the array lines will output, and there is no guarantee there will be a pause because currentThread() may not retrieve this thread. |
| D. | This code will not compile. |
| Answer» E. | |
| 42. |
What will be the output of the program? class Test116 { static final StringBuffer sb1 = new StringBuffer(); static final StringBuffer sb2 = new StringBuffer(); public static void main(String args[]) { new Thread() { public void run() { synchronized(sb1) { sb1.append("A"); sb2.append("B"); } } }.start(); new Thread() { public void run() { synchronized(sb1) { sb1.append("C"); sb2.append("D"); } } }.start(); /* Line 28 */ System.out.println (sb1 + " " + sb2); } } |
| A. | main() will finish before starting threads. |
| B. | main() will finish in the middle of one thread. |
| C. | main() will finish after one thread. |
| D. | Cannot be determined. |
| Answer» E. | |
| 43. |
What will be the output of the program? class s1 extends Thread { public void run() { for(int i = 0; i < 3; i++) { System.out.println("A"); System.out.println("B"); } } } class Test120 extends Thread { public void run() { for(int i = 0; i < 3; i++) { System.out.println("C"); System.out.println("D"); } } public static void main(String args[]) { s1 t1 = new s1(); Test120 t2 = new Test120(); t1.start(); t2.start(); } } |
| A. | Compile time Error There is no start() method |
| B. | Will print in this order AB CD AB... |
| C. | Will print but not be able to predict the Order |
| D. | Will print in this order ABCD...ABCD... |
| Answer» D. Will print in this order ABCD...ABCD... | |
| 44. |
What will be the output of the program? class MyThread extends Thread { MyThread() {} MyThread(Runnable r) {super(r); } public void run() { System.out.print("Inside Thread "); } } class MyRunnable implements Runnable { public void run() { System.out.print(" Inside Runnable"); } } class Test { public static void main(String[] args) { new MyThread().start(); new MyThread(new MyRunnable()).start(); } } |
| A. | Prints "Inside Thread Inside Thread" |
| B. | Prints "Inside Thread Inside Runnable" |
| C. | Does not compile |
| D. | Throws exception at runtime |
| Answer» B. Prints "Inside Thread Inside Runnable" | |
| 45. |
What will be the output of the program? class s1 implements Runnable { int x = 0, y = 0; int addX() {x++; return x;} int addY() {y++; return y;} public void run() { for(int i = 0; i < 10; i++) System.out.println(addX() + " " + addY()); } public static void main(String args[]) { s1 run1 = new s1(); s1 run2 = new s1(); Thread t1 = new Thread(run1); Thread t2 = new Thread(run2); t1.start(); t2.start(); } } |
| A. | Compile time Error: There is no start() method |
| B. | Will print in this order: 1 1 2 2 3 3 4 4 5 5... |
| C. | Will print but not exactly in an order (e.g: 1 1 2 2 1 1 3 3...) |
| D. | Will print in this order: 1 2 3 4 5 6... 1 2 3 4 5 6... |
| Answer» D. Will print in this order: 1 2 3 4 5 6... 1 2 3 4 5 6... | |
| 46. |
Assume the following method is properly synchronized and called from a thread A on an object B: wait(2000); After calling this method, when will the thread A become a candidate to get another turn at the CPU? |
| A. | After thread A is notified, or after two seconds. |
| B. | After the lock on B is released, or after two seconds. |
| C. | Two seconds after thread A is notified. |
| D. | Two seconds after lock B is released. |
| Answer» B. After the lock on B is released, or after two seconds. | |
| 47. |
What will be the output of the program? class MyThread extends Thread { public static void main(String [] args) { MyThread t = new MyThread(); t.start(); System.out.print("one. "); t.start(); System.out.print("two. "); } public void run() { System.out.print("Thread "); } } |
| A. | Compilation fails |
| B. | An exception occurs at runtime. |
| C. | It prints "Thread one. Thread two." |
| D. | The output cannot be determined. |
| Answer» C. It prints "Thread one. Thread two." | |
| 48. |
public class MyRunnable implements Runnable { public void run() { // some code here } } which of these will create and start this thread? |
| A. | new Runnable(MyRunnable).start(); |
| B. | new Thread(MyRunnable).run(); |
| C. | new Thread(new MyRunnable()).start(); |
| D. | new MyRunnable().start(); |
| Answer» D. new MyRunnable().start(); | |
| 49. |
What will be the output of the program? public class Q126 implements Runnable { private int x; private int y; public static void main(String [] args) { Q126 that = new Q126(); (new Thread(that)).start( ); /* Line 8 */ (new Thread(that)).start( ); /* Line 9 */ } public synchronized void run( ) /* Line 11 */ { for (;;) /* Line 13 */ { x++; y++; System.out.println("x = " + x + "y = " + y); } } } |
| A. | An error at line 11 causes compilation to fail |
| B. | Errors at lines 8 and 9 cause compilation to fail. |
| C. | The program prints pairs of values for x and y that might not always be the same on the same line (for example, "x=2, y=1") |
| D. | The program prints pairs of values for x and y that are always the same on the same line (for example, "x=1, y=1". In addition, each value appears once (for example, "x=1, y=1" followed by "x=2, y=2") |
| Answer» E. | |
| 50. |
What will be the output of the program? public class Test107 implements Runnable { private int x; private int y; public static void main(String args[]) { Test107 that = new Test107(); (new Thread(that)).start(); (new Thread(that)).start(); } public synchronized void run() { for(int i = 0; i < 10; i++) { x++; y++; System.out.println("x = " + x + ", y = " + y); /* Line 17 */ } } } |
| A. | Compilation error. |
| B. | Will print in this order: x = 1 y = 1 x = 2 y = 2 x = 3 y = 3 x = 4 y = 4 x = 5 y = 5... but the output will be produced by both threads running simultaneously. |
| C. | Will print in this order: x = 1 y = 1 x = 2 y = 2 x = 3 y = 3 x = 4 y = 4 x = 5 y = 5... but the output will be produced by first one thread then the other. This is guaranteed by the synchronised code. |
| D. | Will print in this order x = 1 y = 2 x = 3 y = 4 x = 5 y = 6 x = 7 y = 8... |
| Answer» D. Will print in this order x = 1 y = 2 x = 3 y = 4 x = 5 y = 6 x = 7 y = 8... | |