[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/ps04/Interview-Questions/master/13_Misc/ThreadExample.java [Back]  [Original]

class MyThread extends Thread {
	private Foo foo;
	public String name;
	public String firstMethod;
	public MyThread(Foo f, String nm, String fM) {
		foo = f;
		name = nm;
		firstMethod = fM;
	} 
	 
	public void run() { 
		if (firstMethod.equals("A")) {
			foo.methodA(name);
		} else { 
			foo.methodB(name);
		} 
	} 
} 
class Foo { 
	private String name;
	 
	public Foo(String nm) {
		name = nm;
	} 
	 
	public String getName() {
		return name;
	} 
	 
	public void pause() { 
		try { 
			Thread.sleep(1000 * 3);
		} catch (InterruptedException e) {
			e.printStackTrace();
		} 
	}	 
	 
	public synchronized void methodA(String threadName) {
		System.out.println("thread " + threadName + " starting: " + name + ".methodA()");
		pause(); 
		System.out.println("thread " + threadName + " ending: " + name + ".methodA()");
	} 
	 
	public void methodB(String threadName) {
		System.out.println("thread " + threadName + " starting: " + name + ".methodB()");
		pause(); 
		System.out.println("thread " + threadName + " ending: " + name + ".methodB()");
	}	 
} 
public class ThreadExample {

	
	public static void main(String[] args) {
		/* Part 1 Demo -- same instance */ 
		System.out.println("Part 1 Demo with same instance.");
		Foo fooA = new Foo("ObjectOne");
		MyThread thread1a = new MyThread(fooA, "Dog", "A");
		MyThread thread2a = new MyThread(fooA, "Cat", "A");
		thread1a.start();
		thread2a.start();
		while (thread1a.isAlive() || thread2a.isAlive()) { };
		System.out.println("\n\n");
		 
		/* Part 1 Demo -- difference instances */ 
		System.out.println("Part 1 Demo with different instances.");
		Foo fooB1 = new Foo("ObjectOne");
		Foo fooB2 = new Foo("ObjectTwo");
		MyThread thread1b = new MyThread(fooB1, "Dog", "A");
		MyThread thread2b = new MyThread(fooB2, "Cat", "A");
		thread1b.start();
		thread2b.start();
		while (thread1b.isAlive() || thread2b.isAlive()) { };
		System.out.println("\n\n");
		 
		/* Part 2 Demo */ 
		System.out.println("Part 2 Demo.");
		Foo fooC = new Foo("ObjectOne");
		MyThread thread1c = new MyThread(fooC, "Dog", "A");
		MyThread thread2c = new MyThread(fooC, "Cat", "B");
		thread1c.start();
		thread2c.start();
	}
	
}

Web Proxy Viewer  |  New URL  |  Original Page