logo

CuriousTab

CuriousTab

Threads problems


  • 1. Which will contain the body of the thread?

  • Options
  • A. run();
  • B. start();
  • C. stop();
  • D. main();
  • Discuss
  • 2. 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?


  • Options
  • 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.
  • Discuss
  • 3. What is the name of the method used to start a thread execution?

  • Options
  • A. init();
  • B. start();
  • C. run();
  • D. resume();
  • Discuss
  • 4. Which of the following will directly stop the execution of a Thread?

  • Options
  • A. wait()
  • B. notify()
  • C. notifyall()
  • D. exits synchronized code
  • Discuss
  • 5. Which of these will create and start this thread?
    public class MyRunnable implements Runnable 
    {
        public void run() 
        {
            // some code here
        }
    }
    

  • Options
  • A. new Runnable(MyRunnable).start();
  • B. new Thread(MyRunnable).run();
  • C. new Thread(new MyRunnable()).start();
  • D. new MyRunnable().start();
  • Discuss
  • 6. What will be the output of the program?
    class Happy extends Thread 
    { 
        final StringBuffer sb1 = new StringBuffer(); 
        final StringBuffer sb2 = new StringBuffer(); 
    
        public static void main(String args[]) 
        { 
            final Happy h = new Happy(); 
    
            new Thread() 
            { 
                public void run() 
                { 
                    synchronized(this) 
                    { 
                        h.sb1.append("A"); 
                        h.sb2.append("B"); 
                        System.out.println(h.sb1); 
                        System.out.println(h.sb2); 
                    } 
                } 
            }.start(); 
    
            new Thread() 
            { 
                public void run() 
                { 
                    synchronized(this) 
                    { 
                        h.sb1.append("D"); 
                        h.sb2.append("C"); 
                        System.out.println(h.sb2); 
                        System.out.println(h.sb1); 
                    } 
                } 
            }.start(); 
        } 
    }
    

  • Options
  • A. ABBCAD
  • B. ABCBCAD
  • C. CDADACB
  • D. Output determined by the underlying platform.
  • Discuss
  • 7. 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 + "..");
            }
        }
    }
    

  • Options
  • 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..
  • Discuss
  • 8. 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 */
            } 
        } 
    } 
    

  • Options
  • 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...
  • Discuss
  • 9. 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(); 
        } 
    }
    

  • Options
  • A. Prints "Inside Thread Inside Thread"
  • B. Prints "Inside Thread Inside Runnable"
  • C. Does not compile
  • D. Throws exception at runtime
  • Discuss
  • 10. 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 + "..");
            }
        }
    }
    

  • Options
  • A. Compilation fails.
  • B. 1..2..3..
  • C. 0..1..2..3..
  • D. 0..1..2..
  • Discuss

First 2 3 4