Lecture Notes Last: Threads. This is the end of the introduction.
We started with this program:
class One {
    public static void main(String[] args) {

	Two larry = new Two("Larry Bird", 7000); 
	Two michael = new Two("Michael Jordan", 3000); 

	// Thread one = new Thread(larry); 
	// Thread two = new Thread(michael); 

	System.out.println("Program started on " + new java.util.Date()); 

        larry.run();
	michael.run(); 

	// one.start(); 
	// two.start(); 

    }
}

class Two /*implements Runnable*/ {
    String name; 
    long delay; 
    Two (String name, long delay) {
	this.name = name; 
	this.delay = delay; 
    }
    public void run() {
	try {
	    Thread.sleep(delay); 
	} catch (Exception e) { } 
	System.out.println(name + " at " + new java.util.Date()); 
    }
}
Run this a few times (here's once):
frilled.cs.indiana.edu%javac One.java
frilled.cs.indiana.edu%java One
Program started on Tue Aug 07 19:02:27 EDT 2001
Larry Bird at Tue Aug 07 19:02:34 EDT 2001
Michael Jordan at Tue Aug 07 19:02:37 EDT 2001
frilled.cs.indiana.edu%
Then we made a few changes (in blue).

class One {
    public static void main(String[] args) {
	
	Two larry = new Two("Larry Bird", 7000); 
	Two michael = new Two("Michael Jordan", 3000); 
	
	Thread one = new Thread(larry); 
	Thread two = new Thread(michael); 
	
	System.out.println("Program started on " + new java.util.Date()); 
	
	/* larry.run(); */ 
	/* michael.run(); */
	
	one.start(); 
	two.start(); 
	
    }
}

class Two implements Runnable {
    String name; 
    long delay; 
    Two (String name, long delay) {
	this.name = name; 
	this.delay = delay; 
    }
    public void run() {
	try {
	    Thread.sleep(delay); 
	} catch (Exception e) { } 
	System.out.println(name + " at " + new java.util.Date()); 
    }
}
If you run it, here's what it looks like:
frilled.cs.indiana.edu%java One
Program started on Tue Aug 07 19:08:45 EDT 2001
Michael Jordan at Tue Aug 07 19:08:49 EDT 2001
Larry Bird at Tue Aug 07 19:08:53 EDT 2001
frilled.cs.indiana.edu%
Now time runs simultaneously for both.

So we make one last change.

class One {
    public static void main(String[] args) {
	
	Two larry = new Two("Larry Bird", 7000); 
	Two michael = new Two("Michael Jordan", 3000); 
	
	Thread one = new Thread(larry); 
	Thread two = new Thread(michael); 
	
	System.out.println("Program started on " + new java.util.Date()); 
	
	one.start(); 
	two.start(); 
	
    }
}

class Two implements Runnable {
    String name; 
    long delay; 
    Two (String name, long delay) {
	this.name = name; 
	this.delay = delay; 
    }
    public void run() {
	while (true) { 
	    try {
		Thread.sleep(delay); 
	    } catch (Exception e) { } 
	    System.out.println(name + " at " + new java.util.Date()); 
	}
    }
}
Here's how it runs.

frilled.cs.indiana.edu%java One
Program started on Tue Aug 07 19:13:58 EDT 2001
Michael Jordan at Tue Aug 07 19:14:01 EDT 2001
Michael Jordan at Tue Aug 07 19:14:04 EDT 2001
Larry Bird at Tue Aug 07 19:14:05 EDT 2001
Michael Jordan at Tue Aug 07 19:14:07 EDT 2001
Michael Jordan at Tue Aug 07 19:14:10 EDT 2001
Larry Bird at Tue Aug 07 19:14:12 EDT 2001
Michael Jordan at Tue Aug 07 19:14:13 EDT 2001
Michael Jordan at Tue Aug 07 19:14:16 EDT 2001
Larry Bird at Tue Aug 07 19:14:19 EDT 2001
Michael Jordan at Tue Aug 07 19:14:19 EDT 2001
Michael Jordan at Tue Aug 07 19:14:22 EDT 2001
Michael Jordan at Tue Aug 07 19:14:25 EDT 2001
Larry Bird at Tue Aug 07 19:14:26 EDT 2001
Michael Jordan at Tue Aug 07 19:14:28 EDT 2001
Michael Jordan at Tue Aug 07 19:14:31 EDT 2001
Larry Bird at Tue Aug 07 19:14:33 EDT 2001
Michael Jordan at Tue Aug 07 19:14:34 EDT 2001
Michael Jordan at Tue Aug 07 19:14:37 EDT 2001
Larry Bird at Tue Aug 07 19:14:40 EDT 2001
Michael Jordan at Tue Aug 07 19:14:40 EDT 2001
Michael Jordan at Tue Aug 07 19:14:43 EDT 2001
Michael Jordan at Tue Aug 07 19:14:46 EDT 2001
Larry Bird at Tue Aug 07 19:14:47 EDT 2001
Michael Jordan at Tue Aug 07 19:14:49 EDT 2001
Michael Jordan at Tue Aug 07 19:14:52 EDT 2001
Larry Bird at Tue Aug 07 19:14:54 EDT 2001
Michael Jordan at Tue Aug 07 19:14:55 EDT 2001
Michael Jordan at Tue Aug 07 19:14:58 EDT 2001
frilled.cs.indiana.edu%
So now you can start studying Threads.

That's all I had to say.


Last updated: Aug 7, 2001 by Adrian German for A201