[NAME] ALL.dao.concurrent.async-class [TITLE] Asynchronous Class [DESCRIPTION] An asynchronous class is a class whose instance will automatically become asynchronous i nstance/object. And when an asynchronous object invokes a method, it will be automaticall y called in asynchronous mode, and start a tasklet and return a future value. Such taskle ts are queued and and executed in the order they are queued. So such asynchronous object acts like an actor in the actor model considering that calli ng methods of such object is just like sending messages to the object with function param eters being the message contents. For each instance, these messages are processed one by one in the order of receiving. Asynchronous class is defined by specifying asynchronous mode with !! after the class nam e. Here is an simple example, 1 class Account !! 2 { 3 private 4 5 var balance = 0 6 7 public 8 9 routine Account( init = 0 ){ 10 balance = init 11 } 12 routine Withdraw( amount: int ) => enum<false,true> 13 { 14 if ( balance < amount ) return $false 15 balance -= amount 16 return $true 17 } 18 routine Deposit( amount: int ) => int 19 { 20 balance += amount 21 return balance 22 } 23 routine Balance() => int 24 { 25 return balance 26 } 27 } 28 29 var acount1 = Account( 100 ) 30 var acount2 = Account( 100 ) 31 32 var future1 = acount1.Withdraw( 10 ) 33 if( future1.value() == $true ){ 34 var future2 = acount2.Deposit( 10 ) 35 } 36 37 var future3 = acount1.Deposit( 20 ) 38 39 io.writeln( 'Balance in account1:', acount1.Balance().value() ) 40 io.writeln( 'Balance in account2:', acount2.Balance().value() ) Like calling mt.start(), calling a method on an asynchronous object will return a future value, which can be used to check the status of the asynchronous call.