In this post, we will learn How to write a java program to Print numbers in sequence using 3 Threads.
Numbers have to print in below order by all 3 Threads::
Thread-1 Thread-2 Thread-3
1 2 3
4 5 6
7 8 9
10 11 12
————————————–
NumbersGenerator.java is used by all three threads to generate numbers in Sequence
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package com.kkjavatutorials.resource; /** * * @author KK JavaTutorials * NumbersGenerator is used by all three threads to generate numbers in Sequence */ public class NumbersGenerator { private int number = 1; private int numberOfThreads; private int totalNumbersInSequence; public NumbersGenerator(int numberOfThreads, int totalNumbersInSequence) { super(); this.numberOfThreads = numberOfThreads; this.totalNumbersInSequence = totalNumbersInSequence; } public void printNumbers(int result) { synchronized (this) { while (number < totalNumbersInSequence-1) { while (number % numberOfThreads != result) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(Thread.currentThread().getName()+" "+number++); notifyAll(); } } } } |
Each thread call method numbersGenerator.printNumbers(result) to generate numbers in sequence
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com.kkjavatutorials.resource; /** * @author KK JavaTutorials * Each thread call method printNumbers to generate numbers in sequence */ public class SequenceGeneratorTask implements Runnable { private NumbersGenerator numbersGenerator; private int result; public SequenceGeneratorTask(NumbersGenerator numbersGenerator, int result) { super(); this.numbersGenerator = numbersGenerator; this.result = result; } @Override public void run() { numbersGenerator.printNumbers(result); } } |
Client program SequenceNumberGeneratorTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package com.kkjavatutorials.client; import com.kkjavatutorials.resource.NumbersGenerator; import com.kkjavatutorials.resource.SequenceGeneratorTask; /** * Java program to Print numbers in sequence using 3 Threads * @author KK JavaTutorials * */ public class SequenceNumberGeneratorTest { private static final int TOTAL_NUMBER_IN_SEQUENCE = 10; private static final int TOTAL_NUMBER_OF_THREADS = 3; public static void main(String[] args) { NumbersGenerator numbersGenerator = new NumbersGenerator(TOTAL_NUMBER_OF_THREADS, TOTAL_NUMBER_IN_SEQUENCE); //Created three Threads Thread t1 = new Thread(new SequenceGeneratorTask(numbersGenerator, 1), "Thread-1"); Thread t2 = new Thread(new SequenceGeneratorTask(numbersGenerator, 2), "Thread-2"); Thread t3 = new Thread(new SequenceGeneratorTask(numbersGenerator, 0), "Thread-3"); //Start all three threads t1.start(); t2.start(); t3.start(); } } |
If you run client program SequenceNumberGeneratorTest.java then this will generate below output:
Thread-1 1
Thread-2 2
Thread-3 3
Thread-1 4
Thread-2 5
Thread-3 6
Thread-1 7
Thread-2 8
Thread-3 9
Thread-1 10
You May Also Like:
How to convert number to words in java
How to swap two numbers with or without temporary variable in java
Java Program to Swap two numbers using Bitwise XOR Operator?
How to reverse a number in Java
How to check Armstrong number java program
Java program to find factorial of a number
Java Program to Calculate the Power of a Number
Check whether a number is prime or not
That’s all about Java program to Print numbers in sequence using 3 Threads?
If you have any feedback or suggestion please feel free to drop in below comment box.
Hii kishan,
Query re: Java program to Print numbers in sequence using 3 Threads
I’ve used the same code to print 40 numbers using 5 threads, but threads are printing the numbers greater than total numbers to be printed.
pls find the below output.
Thread-1—1
Thread-2—2
Thread-3—3
Thread-4—4
Thread-5—5
Thread-1—6
Thread-2—7
Thread-3—8
Thread-4—9
Thread-5—10
Thread-1—11
Thread-2—12
Thread-3—13
Thread-4—14
Thread-5—15
Thread-1—16
Thread-2—17
Thread-3—18
Thread-4—19
Thread-5—20
Thread-1—21
Thread-2—22
Thread-3—23
Thread-4—24
Thread-5—25
Thread-1—26
Thread-2—27
Thread-3—28
Thread-4—29
Thread-5—30
Thread-1—31
Thread-2—32
Thread-3—33
Thread-4—34
Thread-5—35
Thread-1—36
Thread-2—37
Thread-3—38
Thread-4—39
Thread-5—40
Thread-1—41
Thread-2—42
It would be great if you let me know where to alter the code