1. (20 pts) For the following program, explain the interesting elements related
ID: 3829157 • Letter: 1
Question
1. (20 pts) For the following program, explain the interesting elements related to threads.
1 public class TaskThreadDemo {
2 public static void main (String args []) {
3 String [] sa = {"a", "X", "+", "."};
4 for (String s: sa) {
5 Runnable ps = new PrintChar (s, 200);
6 Thread ts = new Thread (ps, s);
7 ts.start ();
8 } // end for each character
9 } // end main
10 } // end class TaskThreadDemo
11
12 class PrintChar implements Runnable {
13 String ch;
14 int times;
15
16 public PrintChar (String c, int n) {
17 ch = c;
18 times = n;
19 } // end constructor
20
21 public void run () {
22 for (int i = 0; i < times; i++) {
23 System.out.print (ch);
24 } // end for loop
25 } // end method run
26 } // end class PrintChar
(20 pts) List and explain the threads running in your Sorcerer's Cave program as reported by jconsole. Note that you can name the threads created in the program, as is done on line 6 in Problem 1 above, which can make this discussion a lot easier to follow.
5. (20 pts) Explain how the java.util.concurrent.Semaphore might class be used in the Sorcerer's Cave program, final project, to coordinate the requirements of the various jobs. Then address the question of whether or not this actually makes sense in the context of the requirements of program. In other words, can you suggest approaches to handling shared resource pools that would be simpler than using semaphores?
Explanation / Answer
Hi, I have answered Q1 and given the details about what the program is doing.
public class TaskThreadDemo {
public static void main (String args []) {
String [] sa = {"a", "X", "+", "."};
for (String s: sa) {
Runnable ps = new PrintChar (s, 200); // runnable object
Thread ts = new Thread (ps, s); // creating thread
ts.start (); // starting object
} // end for each character
} // end main
} // end class TaskThreadDemo
//THIS IS A RUNNABLE INTERFACE IMPLEMENTER
class PrintChar implements Runnable {
String ch;
int times;
public PrintChar (String c, int n) {
ch = c;
times = n;
} // end constructor
public void run () { // THis is the method run by the thread
for (int i = 0; i < times; i++) {
System.out.print (ch);
} // end for loop
System.out.println();
} // end method run
} // end class PrintChar
/*
Output:
aa..................................................++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++......................................................................................................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
++++++++++++++++
XXXXXXXXXXXXXXXXXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*/
Here, at line 6, we are creating a new thread that target new PrintChar object. We are passing cureent string that
will be printed 200 times in PrintChar class.
An Instance of Thread is an object like any other object in Java, it contains variables and methods which lives and dies on the heap. But a Thread of Execution is an individual process which has its own stack call. Even if you don’t create any thread in your program, thread will be running there and main() method will start that.
Every thread of execution begins as an instance of class Thread. In any case Thread objects needs to be created before creating Thread of Execution.
you need to implement a run() method provided by a Runnable interface. This method provides an entry point for the thread and you will put your complete business logic inside this method. Following is a simple syntax of the run() method
public void run( )
Once a Thread object is created, you can start it by calling start() method, which executes a call to run( ) method. Following is a simple syntax of start() method
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.