A system and method are provided for isolating the execution of a plurality
of applications which access shared data. A limited number of special
classes encapsulate data that should be shared by all classes in the
multitasking system. Static fields of all classes, including the special
classes, are virtualized such that each application has its own copy of
static fields and class monitors. However, a special class has special
program code associated with it, such that an invocation of any of the
methods of the special class causes a switch of an application ID
associated with the thread (referred to herein as an effective thread
application ID or TA-ID) to a constant value. Thus, the applications may
access a single, shared copy of the special class. The TA-ID may be
changed back to the original value upon exiting one of the methods.
Although one instance of identifier-switching is typically more costly
than one instance of determining whether a class is special, the
identifier-switching may be performed only for special classes rather than
for all classes. The common case may therefore be optimized.
Un système et une méthode sont donnés pour isoler l'exécution d'une pluralité d'applications qui accèdent à des données partagées. Un nombre limité de classes spéciales encapsulent les données qui devraient être partagées par toutes les classes dans le traitement multitâche. Les champs statiques de toutes les classes, y compris les classes spéciales, sont virtualized tels que chaque application a sa propre copie des champs et des moniteurs statiques de classe. Cependant, une classe spéciale a le code spécial de programme lié à elle, telle qu'une invocation d'un quelconque des méthodes de classe spéciale cause un commutateur d'une identification d'application liée au fil (désigné ci-après sous le nom d'une identification ou d'un TA-ID efficace d'application de fil) à une valeur constante. Ainsi, les applications peuvent accéder à une copie simple et partagée de la classe spéciale. Le TA-ID peut être changé de nouveau à la valeur originale lors d'annuler une des méthodes. Bien qu'un exemple de la marque-commutation soit en général plus coûteux qu'un exemple de déterminer si une classe est spéciale, la marque-commutation peut être exécutée seulement pour les classes spéciales plutôt que pour toutes les classes. Le cas commun peut donc être optimisé.