[Assignment Problem] Multi-threaded Series Printer

Problem

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.

 

Input and Output

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

 

Additional Notes

  • 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.

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)