Starting from:

$29.99

Project 2: Multi-threaded Programming in Java

Page 1

Points: 100
Objectives: To practice programming an application with multiple threads of execution and
synchronizing their access to necessary shared objects.
Description: In this programming assignment you will simulate the package shipping management
system for an automated package shipping operation similar to the one depicted here:
This example package shipping operation has five routing stations (S0 – S4), each of which has an
input and output conveyor connecting to conveyor lines (C0 – C4) that go elsewhere in the system.
Resources were limited when the system was built so each conveyor going to the rest of the facility
must be shared between two routing stations. Since each routing station simultaneously needs an
input and output connection to function, access to the shared conveyor lines must be strictly
regulated. Flow direction in not important in our simulation.
You have been hired to design a simulator for a new package management system being built with
the same design, but possibly fewer/more stations. You are to implement this simulator in Java and
have each routing station function in its own thread. A routing station moves packages from one of
its connected conveyors to the other. A station’s workload is the number of times that a routing
CNT 4714 – Project 2 – Fall 2017
conveyor 4
conveyor 3
conveyor 2
conveyor 1
conveyor 0
S0
S4 S1
S3 S2Page 2
station needs to have exclusive access to the input and output conveyors during the simulation.
Once a routing station is granted access to both conveyors it calls its doWork()method during
which it will flow packages down each of its connected conveyors (of course it must verify that it
has access and isn’t in conflict with another routing station). After the packages-in and packagesout methods are run, the workload of the routing station is reduced by 1 and the routing station will
release both of the conveyors and signal waiting routing stations that the conveyors are available.
After executing a flow and releasing its conveyors, a routing station should sleep for some random
period of time. A routing station’s thread stops running when its workload reaches 0. To prevent
deadlock, ensure that each routing station acquires locks on the conveyors it needs in increasing
numerical order.
Restrictions:
1.Your source files should begin with comments containing the following information:
/*
Name: <your name goes here
Course: CNT 4714 Fall 2017
Assignment title: Project 2 – Multi-threaded programming in Java
Date: September 24, 2017
Class: <name of class goes here
*/
2. Do not use a monitor to control the synchronization in your program (i.e., do not use the
Java synchronize statement).
Input Specification:
Your program must initially read from a text file (config.txt) to gather configuration
information for the simulator. The first line of the text file will be the number of routing stations to
use during the simulation. Afterwards, there will be one line for each station. These lines will hold
the amount of work each station needs to process (i.e, the number of times it needs to move
packages down the conveyor system). Only use integers in your configuration file, decimals will
not be needed. You can assume that the maximum number of stations will be 10.
Output Specification:
Your simulator must output the following text to let the user know what the simulator is doing in
each of these situations:
1. An input conveyor is set:
Station X: In-Connection set to conveyor n
2. An output conveyor is set:
Station X: Out-Connection set to conveyor n
3. A stations workload is set:
Station X: Workload set. Station X has n package groups to move.
4. A station is granted access to a conveyor:
Station X: granted access to conveyor n
5. A station is releasing access to a conveyor:Page 3
Station X: released access to conveyor n
6. A station has completed its workload:
* * Station X: Workload successfully completed. * *
7. A station successfully flows packages down a conveyor:
Station X: successfully moves packages on conveyor n.
8. A station completes a flow:
Station X: has n package groups left to move.
Deliverables:
Submit the following items via WebCourses no later than 11:59pm September 24, 2017.
(1) All of your .java files.
(2) A copy of a sample execution of your program, i.e., the output produced by your
simulator (this should just be a text file). In Eclipse you can redirect console output to a
file, do this and include a copy of the output file produced by your program.
Additional Information:
Actual simulation run in Eclipse (console output redirected in this
example) with config.txt containing 3 2 3 4, is shown
below.Page 4Page 5

More products