Skip to content
Snippets Groups Projects
Part6.scala 447 B
Newer Older
Matt Bovel's avatar
Matt Bovel committed
package midterm22

import instrumentation.Monitor

// Question 21

// See tests in midterm22.Part6Test.
// Run with `sbt testOnly midterm22.Part6Test`.

class TicketsManager(totalTickets: Int) extends Monitor:
  var remainingTickets = totalTickets

  // This method might be called concurrently
  def getTicket(): Boolean =
    if remainingTickets > 0 then
      this.synchronized {
        remainingTickets -= 1
      }
      true
    else false