CS508 Modern Programming Languages Assignment 4 Solution Spring 2013

Question # 1                                                                                                                               Marks 5     


How can we avoid Aliasing Problems in Java, provide a code example. Keep your answer to the point.


Question # 2                                                                                                                              Marks 10     

You will write a simple Java code that will demonstrate working of threads. You will write two classes, one CS508.java and 2nd one will be SimpleThread.java.

SimpleThead.java will extend the thread class. In run method, your thread will display its name and number of milliseconds (0 to 5000) it will sleep for. And then it will sleep randomly for 1 to 5000 milliseconds. Once thread has finished it will display its name and message that it has finished. One thread will sleep 5 times before ending.

In CS508.java, you will create 3 threads of SimpleThread  and will run them. Name of the first thread will be your name, name of second thread will be your VU student id, and name of 3rd thread will be VU. 

Here is the sample output of the code that you will write


// CS508
import java.lang.Thread;
public class CS508
public static void main( String[] args )
// create each thread with a new targeted runnable
Thread thread1 = new Thread( new PrintTask( "pc130200019" ) );
Thread thread2 = new Thread( new PrintTask( "H. M. Imran" ) );
Thread thread3 = new Thread( new PrintTask( "Student1" ) );
Thread thread4 = new Thread( new PrintTask( "Student2" ) );
Thread thread5 = new Thread( new PrintTask( "Student3" ) );
Thread thread6 = new Thread( new PrintTask( "Student4" ) );
Thread thread7 = new Thread( new PrintTask( "Student5" ) );
// start threads and place in runnable state
thread1.start(); // invokes run method
thread2.start(); // invokes run method
thread3.start(); // invokes run method
thread4.start(); // invokes run method
thread5.start(); // invokes run method
thread6.start(); // invokes run method
thread7.start(); // invokes run method
} // end main
} // end class CS508
// SimpleThread class sleeps for a random time from 0 to 5 seconds
import java.util.Random;
public class SimpleThread implements Runnable 
private final int sleepTime; // random sleep time for thread
private final String taskName; // name of task
private final static Random generator = new Random();

public SimpleThread( String name )
taskName = name; // set task name

// pick random sleep time between 0 and 5 seconds
sleepTime = generator.nextInt( 5000 ); // milliseconds
} // end SimpleThread constructor
// method run contains the code that a thread will execute
public void run()
try // put thread to sleep for sleepTime amount of time 
System.out.printf( "%s will sleep for %d Milliseconds.n", 
taskName, sleepTime );
Thread.sleep( sleepTime ); // put thread to sleep
} // end try 
catch ( InterruptedException exception )
System.out.printf( "%s %sn", taskName,
"terminated prematurely due to interruption" );
} // end catch

// print task name
System.out.printf( "%s thread has finishedn", taskName ); 
} // end method run
} // end class SimpleThread

Download Code Files