<< §5.1 Effect of team activation | ↑ Table of Contents ↑ | §5.3 Implicit team activation >> |
§5.2 Explicit team activation
(a) Activation block
A team can be activated thread local by the block construct
within (myTeam) { stmts }
If stmts has only one statement this can be abbreviated to
within (myTeam) stmt
In these statements, myTeam
must denote a team instance.
For the time of executing this block, this team instance is activated for the current thread,
which has entered the within block.
The within
block statement guarantees that it leaves
the team in exactly the same activation state as it was in when
entering this block. This includes the cases of exceptions, meaning
that deactivation will also occur if the execution of the block
terminates abnormally.
(b) Imperative activation
Each team class implicitly provides methods from the predefined interface
org.objectteams.ITeam
(super interface of all team classes) to control team
activation disregarding the block structure of the program. The methods activate()
and deactivate()
are used to activate and deactivate a team instance for
the current thread.
If a team should be de-/activated for another thread this can be done by the methods
activate(Thread aThread)
and deactivate(Thread aThread)
.
In order to achieve global activation for all threads the predefined constant
org.objectteams.Team.ALL_THREADS
is passed to these methods (e.g.
activate(Team.ALL_THREADS)
).
Note, that this methods make no guarantees with respect to exceptions.
(c) Multiple and mixed activations
- If
activate()
is invoked on a team instance that has been explicitly activated before, this statement has no effect at all (note the difference in §5.3.(a) below).
The same applies to deactivating an inactive team. - If a team was already active when entering a
within
block, it will remain active after leaving the block. - If the team was active on entry of a
within
block and ifdeactivate()
is invoked on the same team instance from within thewithin
block, leaving the block will re-activate the team.
<< §5.1 Effect of team activation | ↑ Table of Contents ↑ | §5.3 Implicit team activation >> |