Engineering Full Stack Apps with Java and JavaScript
Write a multi-threaded program to print data from four series of data in alternating order.
There are four series of data are as below:
Series 1: 0, 4, 8, 12, …
Series2: 1, 5, 9, 13, …
Series3: 2, 6, 10, 14, …
Series4: 3, 7, 11, 15, …
Each series is an inifinte set of data.
Inputs to program will be:
Arg 0: No of threads to be spawned by program.
Arg1: No of entries to be printed for each series
Expected Output:
Data from series in alternating order. The output shown will be also in ascending order as well with no data repeating.
Sample Inputs and Outputs
Arg0 |
Arg1 |
Expected Output |
Note |
1 |
4 |
0,4,8,12 |
One thread will be spawned which prints data from Series1 only |
3 |
4 |
0,1,2,4,5,6,8,9,10,12,13,14,15 |
Thread threads will be spawned which will print data from Series1,2 and 3 in alternating order |
4 |
2 |
0,1,2,3,4,5,6,7 |
Four threads will be spawned and prints data from all series alternatively |
2 |
2 |
0,1,4,5 |
Two threads will be spawned which prints data alternatively |
Note:
Each thread can print only data from one series. For eg:, thread1 will print data of series1,thread2 will print data of series2 and so on.
Thread ‘n’ should print data belonging to series n only.
A thread which prints data from one series should not print data belonging to any other series.
After printing one output, the same thread should print only after other threads print output from their respective series
If any information which is needed for solving the problem is missing, properly state the assumptions.
Minimal unit test suite also should be included, which could be run to verify successful running condition and a failure condition.
Try to make the code as extensible as possible.
The program should not depend on third party libraries, Java EE libraries etc.