java.lang.Object
g1101_1200.s1195_fizz_buzz_multithreaded.FizzBuzz

public class FizzBuzz extends java.lang.Object
1195 - Fizz Buzz Multithreaded.

Medium

You have the four functions:

  • printFizz that prints the word "Fizz" to the console,
  • printBuzz that prints the word "Buzz" to the console,
  • printFizzBuzz that prints the word "FizzBuzz" to the console, and
  • printNumber that prints a given integer to the console.

You are given an instance of the class FizzBuzz that has four functions: fizz, buzz, fizzbuzz and number. The same instance of FizzBuzz will be passed to four different threads:

  • Thread A: calls fizz() that should output the word "Fizz".
  • Thread B: calls buzz() that should output the word "Buzz".
  • Thread C: calls fizzbuzz() that should output the word "FizzBuzz".
  • Thread D: calls number() that should only output the integers.

Modify the given class to output the series [1, 2, "Fizz", 4, "Buzz", ...] where the ith token ( 1-indexed ) of the series is:

  • "FizzBuzz" if i is divisible by 3 and 5,
  • "Fizz" if i is divisible by 3 and not 5,
  • "Buzz" if i is divisible by 5 and not 3, or
  • i if i is not divisible by 3 or 5.

Implement the FizzBuzz class:

  • FizzBuzz(int n) Initializes the object with the number n that represents the length of the sequence that should be printed.
  • void fizz(printFizz) Calls printFizz to output "Fizz".
  • void buzz(printBuzz) Calls printBuzz to output "Buzz".
  • void fizzbuzz(printFizzBuzz) Calls printFizzBuzz to output "FizzBuzz".
  • void number(printNumber) Calls printnumber to output the numbers.

Example 1:

Input: n = 15

Output: [1,2,“fizz”,4,“buzz”,“fizz”,7,8,“fizz”,“buzz”,11,“fizz”,13,14,“fizzbuzz”]

Example 2:

Input: n = 5

Output: [1,2,“fizz”,4,“buzz”]

Constraints:

  • 1 <= n <= 50
  • Constructor Summary

    Constructors
    Constructor
    Description
    FizzBuzz(int n)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    buzz(java.lang.Runnable printBuzz)
     
    void
    fizz(java.lang.Runnable printFizz)
     
    void
    fizzbuzz(java.lang.Runnable printFizzBuzz)
     
    void
    number(java.util.function.IntConsumer printNumber)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • FizzBuzz

      public FizzBuzz(int n)
  • Method Details

    • fizz

      public void fizz(java.lang.Runnable printFizz) throws java.lang.InterruptedException
      Throws:
      java.lang.InterruptedException
    • buzz

      public void buzz(java.lang.Runnable printBuzz) throws java.lang.InterruptedException
      Throws:
      java.lang.InterruptedException
    • fizzbuzz

      public void fizzbuzz(java.lang.Runnable printFizzBuzz) throws java.lang.InterruptedException
      Throws:
      java.lang.InterruptedException
    • number

      public void number(java.util.function.IntConsumer printNumber) throws java.lang.InterruptedException
      Throws:
      java.lang.InterruptedException