logo

CuriousTab

CuriousTab

Discussion


Home Java Programming Threads See What Others Are Saying!
  • Question
  • 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?


  • Options
  • 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

  • Correct Answer
  • Synchronize the increase() method 

    Explanation
    Option D is correct because synchronizing the code that actually does the increase will protect the code from being accessed by more than one thread at a time.

    Option A is incorrect because synchronizing the run() method would stop other threads from running the run() method (a bad idea) but still would not prevent other threads with other runnables from accessing the increase() method.

    Option B is incorrect for virtually the same reason as A?synchronizing the code that calls the increase() method does not prevent other code from calling the increase() method.


    More questions

    • 1. What will be the output of the program?
      public class SqrtExample 
      {
          public static void main(String [] args) 
          {
              double value = -9.0;
              System.out.println( Math.sqrt(value));
          }
      }
      

    • Options
    • A. 3.0
    • B. -3.0
    • C. NaN
    • D. Compilation fails.
    • Discuss
    • 2. Which two are valid constructors for Thread?

      1. Thread(Runnable r, String name)
      2. Thread()
      3. Thread(int priority)
      4. Thread(Runnable r, ThreadGroup g)
      5. Thread(Runnable r, int priority)

    • Options
    • A. 1 and 3
    • B. 2 and 4
    • C. 1 and 2
    • D. 2 and 5
    • Discuss
    • 3. Which collection class allows you to associate its elements with key values, and allows you to retrieve objects in FIFO (first-in, first-out) sequence?

    • Options
    • A. java.util.ArrayList
    • B. java.util.LinkedHashMap
    • C. java.util.HashMap
    • D. java.util.TreeMap
    • Discuss
    • 4. What will be the output of the program?
      String x = "xyz";
      x.toUpperCase(); /* Line 2 */
      String y = x.replace('Y', 'y');
      y = y + "abc";
      System.out.println(y);
      

    • Options
    • A. abcXyZ
    • B. abcxyz
    • C. xyzabc
    • D. XyZabc
    • Discuss
    • 5. What will be the output of the program?
      public class SwitchTest 
      {  
          public static void main(String[] args) 
          {
              System.out.println("value =" + switchIt(4)); 
          } 
          public static int switchIt(int x) 
          {
              int j = 1;  
              switch (x) 
              { 
                  case l: j++; 
                  case 2: j++;  
                  case 3: j++; 
                  case 4: j++; 
                  case 5: j++; 
                  default: j++; 
                  } 
              return j + x;  
          } 
      }
      

    • Options
    • A. value = 2
    • B. value = 4
    • C. value = 6
    • D. value = 8
    • Discuss
    • 6. What will be the output of the program?
      public class If2 
      {
          static boolean b1, b2;
          public static void main(String [] args) 
          {
              int x = 0;
              if ( !b1 ) /* Line 7 */
              {
                  if ( !b2 ) /* Line 9 */
                  {
                      b1 = true;
                      x++;
                      if ( 5 > 6 ) 
                      {
                          x++;
                      }
                      if ( !b1 ) 
                          x = x + 10;
                      else if ( b2 = true ) /* Line 19 */
                          x = x + 100;
                      else if ( b1 | b2 ) /* Line 21 */
                          x = x + 1000;
                  }
              }
              System.out.println(x);
          }
      }
      

    • Options
    • A. 0
    • B. 1
    • C. 101
    • D. 111
    • Discuss
    • 7. What will be the output of the program?
      public class A
      { 
          void A() /* Line 3 */
          {
              System.out.println("Class A"); 
          } 
          public static void main(String[] args) 
          { 
              new A(); 
          } 
      }
      

    • Options
    • A. Class A
    • B. Compilation fails.
    • C. An exception is thrown at line 3.
    • D. The code executes with no output.
    • Discuss
    • 8. What will be the output of the program?
      class Test 
      {
          public static void main(String [] args) 
          {
              Test p = new Test();
              p.start();
          }
      
          void start() 
          {
              boolean b1 = false;
              boolean b2 = fix(b1);
              System.out.println(b1 + " " + b2);
          }
      
          boolean fix(boolean b1) 
          {
              b1 = true;
              return b1;
          }
      }
      

    • Options
    • A. true true
    • B. false true
    • C. true false
    • D. false false
    • Discuss
    • 9. What will be the output of the program?
      class Test 
      {
          static int s;
          public static void main(String [] args) 
          {
              Test p = new Test();
              p.start();
              System.out.println(s);
          }
      
          void start() 
          {
              int x = 7;
              twice(x);
              System.out.print(x + " ");
          }
      
          void twice(int x) 
          {
              x = x*2;
              s = x;
          }
      }
      

    • Options
    • A. 7 7
    • B. 7 14
    • C. 14 0
    • D. 14 14
    • Discuss
    • 10. You want a class to have access to members of another class in the same package. Which is the most restrictive access that accomplishes this objective?

    • Options
    • A. public
    • B. private
    • C. protected
    • D. default access
    • Discuss


    Comments

    There are no comments.

Enter a new Comment