Results 1 to 3 of 3
  1. #1
    peixd is offline Member
    Join Date
    Jun 2010
    Posts
    1
    Rep Power
    0

    Default need answers to this java program

    hello,everyone. i am a new commer. i read the java tutorial. then i hava got a question. the source code is as follows:
    Java Code:
    public class SimpleThreads {
    
      // Display a message, preceded by the name
      // of the current thread
      static void threadMessage(String message) {
        String threadName = Thread.currentThread().getName();
        System.out.format("%s: %s%n", threadName, message);
      }
    
      private static class MessageLoop implements Runnable {
        public void run() {
          String importantInfo[] = {
            "Mares eat oats",
            "Does eat oats",
            "Little lambs eat ivy",
            "A kid will eat ivy too"
          };
          try {
            for (int i = 0; i < importantInfo.length; i++) {
              // Pause for 4 seconds
              Thread.sleep(4000);
              // Print a message
              threadMessage(importantInfo[i]);
            }
          } catch (InterruptedException e) {
              threadMessage("I wasn't done!");
          }
        }
      }
    
      public static void main(String args[])
          throws InterruptedException {
    
        // Delay, in milliseconds before we interrupt MessageLoop
        // thread (default one hour).
        long patience = 1000 * 60 * 60;
    
        // If command line argument present,
        // gives patience in seconds.
        if (args.length > 0) {
          try {
              patience = Long.parseLong(args[0]) * 1000;
          } catch (NumberFormatException e) {
              System.err.println("Argument must be an integer.");
              System.exit(1);
          }
        }
    
        threadMessage("Starting MessageLoop thread");
        long startTime = System.currentTimeMillis();
        Thread t = new Thread(new MessageLoop());
        t.start();
    
        threadMessage("Waiting for MessageLoop thread to finish");
        // loop until MessageLoop thread exits
        while (t.isAlive()) {
          threadMessage("Still waiting...");
          // Wait maximum of 1 second for MessageLoop thread to
          // finish.
          t.join(1000);
          if (((System.currentTimeMillis() - startTime) > patience)
                                                  && t.isAlive()) {
            threadMessage("Tired of waiting!");
            t.interrupt();
            // Shouldn't be long now -- wait indefinitely
            t.join();
          }
    
        }
        threadMessage("Finally!");
      }
    }
    in the WHILE block, is the t.join() necessary ? the t.interrupt has made the t thread interrupted, why does the main thread still have to wait the t thread to finish?
    Last edited by Eranga; 06-14-2010 at 05:21 AM. Reason: code tags added

  2. #2
    Eranga's Avatar
    Eranga is offline Moderator
    Join Date
    Jul 2007
    Location
    Colombo, Sri Lanka
    Posts
    11,371
    Blog Entries
    1
    Rep Power
    20

    Default

    Please use code tags when you posting again in the forum. Unformated codes are really hard to read. If you don't know how to do it, please check on my forum signature.

  3. #3
    Eranga's Avatar
    Eranga is offline Moderator
    Join Date
    Jul 2007
    Location
    Colombo, Sri Lanka
    Posts
    11,371
    Blog Entries
    1
    Rep Power
    20

Similar Threads

  1. Java- Interview Questions and Answers
    By nishants in forum Java Software
    Replies: 0
    Last Post: 04-17-2010, 01:48 PM
  2. Inheritance problems...quick answers if possible :)
    By circuspeanuts in forum New To Java
    Replies: 1
    Last Post: 04-13-2009, 10:06 PM
  3. Replies: 0
    Last Post: 04-04-2008, 03:40 PM
  4. Replies: 0
    Last Post: 01-24-2008, 08:53 PM
  5. Replies: 0
    Last Post: 10-04-2007, 10:33 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •