Class FooBar

  • All Implemented Interfaces:

    
    public final class FooBar
    
                        

    1115 - Print FooBar Alternately.

    Medium

    Suppose you are given the following code:

    class FooBar { public void foo() { for (int i = 0; i < n; i++) { print("foo"); } } public void bar() { for (int i = 0; i < n; i++) { print("bar"); } } }

    The same instance of FooBar will be passed to two different threads:

    • thread A will call foo(), while

    • thread B will call bar().

    Modify the given program to output "foobar" n times.

    Example 1:

    Input: n = 1

    Output: "foobar"

    Explanation: There are two threads being fired asynchronously. One of them calls foo(), while the other calls bar(). "foobar" is being output 1 time.

    Example 2:

    Input: n = 2

    Output: "foobarfoobar"

    Explanation: "foobar" is being output 2 times.

    Constraints:

    • 1 &lt;= n &lt;= 1000

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Field Summary

      Fields 
      Modifier and Type Field Description
    • Constructor Summary

      Constructors 
      Constructor Description
      FooBar(Integer n)
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      final Unit foo(Runnable printFoo)
      final Unit bar(Runnable printBar)
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait