Click here to watch in Youtube:
https://www.youtube.com/watch?v=2pKSE0LMpOw&list=UUhwKlOVR041tngjerWxVccw
SimpleThreads.java
Outputhttps://www.youtube.com/watch?v=2pKSE0LMpOw&list=UUhwKlOVR041tngjerWxVccw
SimpleThreads.java
/* * SimpleThreads consists of two threads. The first is * the main thread that every Java application has. The * main thread creates a new thread from the Runnable * object, MessageLoop, and waits for it to finish. If * the MessageLoop thread takes too long to finish, the * main thread interrupts it. * * The MessageLoop thread prints out a series of * messages. If interrupted before it has printed all * its messages, the MessageLoop thread prints a message * and exits. */ 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[] = { "Peter goes to Japan", "Hello welcome to india", "Twinkle Twinkle little star", "John is a super man" }; 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!"); } }
main: Starting MessageLoop thread main: Waiting for MessageLoop thread to finish main: Still waiting... main: Still waiting... main: Still waiting... main: Still waiting... main: Still waiting... Thread-0: Peter goes to Japan main: Still waiting... main: Still waiting... main: Still waiting... main: Still waiting... Thread-0: Hello welcome to india main: Still waiting... main: Still waiting... main: Still waiting... main: Still waiting... Thread-0: Twinkle Twinkle little star main: Still waiting... main: Still waiting... main: Still waiting... Thread-0: John is a super man main: Finally!
https://sites.google.com/site/ramj2eev1/home/javabasics/ThreadDemo_simplethreads_app.zip?attredirects=0&d=1
Github Link:
https://github.com/ramram43210/Java/tree/master/BasicJava/ThreadDemo_simplethreads_app
Bitbucket Link:
https://bitbucket.org/ramram43210/java/src/2bc24748fe4193d8423018abb163c74598759d97/BasicJava/ThreadDemo_simplethreads_app/?at=master
See also:
No comments:
Post a Comment