Newer
Older
package midterm22
import instrumentation.Monitor
class Account(private var amount: Int = 0) extends Monitor:
def transfer(target: Account, n: Int) =
this.synchronized {
target.synchronized {
this.amount -= n
target.amount += n
}
}
@main def mock2() =
val a = new Account(50)
val b = new Account(70)
val t1 = task { a.transfer(b, 10) }
val t2 = task { b.transfer(a, 10) }
t1.join()
t2.join()