System and method for minimizing inter-application interference among static synchronized methods
First Claim
1. A method for isolating the execution of a plurality of applications, the method comprising:
- providing a plurality of monitors to access a synchronized method;
enabling two or more of a plurality of applications to call the synchronized method concurrently by accessing the synchronized method through the plurality of monitors; and
excluding a plurality of threads within one of the applications from calling the synchronized method concurrently.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method for isolating the execution of a plurality of applications. A plurality of monitors are provided for a plurality of applications to access a static synchronized method. The applications are enabled to call the static synchronized method concurrently by accessing the static synchronized method through the plurality of monitors. A plurality of threads within one of the applications are excluded from calling the static synchronized method concurrently. The source code or bytecode for the synchronized method may be transformed by removing a method-level monitor and adding the plurality of monitors inside the method. In one embodiment, each static synchronized method is replaced with a corresponding static non-synchronized method. The applications may be further isolated by placing the static fields of shared classes into a static field class, which has one instance per utilizing application. The static non-synchronized method includes the body of the corresponding static synchronized method, wherein the body is synchronized on the instance of the static field class that corresponds to the utilizing application.
-
Citations
30 Claims
-
1. A method for isolating the execution of a plurality of applications, the method comprising:
-
providing a plurality of monitors to access a synchronized method;
enabling two or more of a plurality of applications to call the synchronized method concurrently by accessing the synchronized method through the plurality of monitors; and
excluding a plurality of threads within one of the applications from calling the synchronized method concurrently. - View Dependent Claims (2, 3, 4, 5)
wherein each monitor corresponds to one of the plurality of applications which calls the synchronized method. -
3. The method of claim 1, further comprising:
transforming source code for the synchronized method by removing a method-level monitor and adding the plurality of monitors inside the method.
-
4. The method of claim 1, further comprising:
transforming bytecode for the synchronized method by removing a method-level monitor and adding the plurality of monitors inside the method.
-
5. The method of claim 1,
wherein the synchronized method is a static synchronized method.
-
-
6. A method for isolating the execution of a plurality of applications, the method comprising:
-
extracting zero or more static fields from an original class utilized by any of the plurality of applications, wherein the original class comprises at least one static synchronized method, and wherein each static synchronized method comprises an executable block;
creating a static field class, wherein the static field class comprises zero or more instance fields corresponding to the zero or more static fields, and wherein each instance of the static field class corresponds to one of the plurality of applications; and
replacing each static synchronized method with a corresponding static non-synchronized method, wherein the corresponding static non-synchronized method comprises the executable block from the corresponding static synchronized method which is synchronized on the corresponding instance of the static field class for the utilizing application. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
creating on e or more access methods for the static fields, wherein the access methods are operable to access the corresponding instance of the static field class based upon the identity of the utilizing application.
-
-
11. The method of claim 6, wherein extracting the static fields, creating the static field class, and replacing each static synchronized method are performed within a virtual machine.
-
12. The method of claim 11, wherein the virtual machine is implemented in accordance with a platform-independent virtual machine specification.
-
13. The method of claim 6, wherein the plurality of applications are executable in a platform-independent programming environment.
-
14. The method of claim 6, wherein extracting the static fields, creating the static field class, and replacing each static synchronized method is transparent to the utilizing applications.
-
15. The method of claim 6, wherein extracting the static fields, creating the static field class, and replacing each static synchronized method are performed at run-time.
-
16. The method of claim 6, wherein extracting the static fields, creating the static field class, and replacing each static synchronized method are performed at compilation.
-
17. The method of claim 6, wherein extracting the static fields, creating the static field class, and replacing each static synchronized method further comprise transforming the bytecode of the one or more applications.
-
18. The method of claim 6, wherein extracting the static fields, creating the static field class, and replacing each static synchronized method further comprise transforming the source code of the one or more applications.
-
19. A system for isolating the execution of a plurality of applications, the system comprising:
-
an original class utilized by the plurality of applications, wherein the original class comprises zero or more static fields and one or more static synchronized methods, and wherein each of the static synchronized methods comprises an executable block;
a modified original class generated from the original class, wherein the modified class comprises the original class without the static fields;
a static field class generated from the original class, wherein each instance of the static field class corresponds to one of the plurality of applications, and wherein the static field class comprises zero or more instance fields corresponding to the zero or more static fields of the original class; and
one or more static non-synchronized methods, wherein each static non-synchronized method is generated from a corresponding one of the static synchronized methods, and wherein each static non-synchronized method comprises the executable block from the corresponding static synchronized method which is synchronized on the corresponding instance of the static field class for the utilizing application. - View Dependent Claims (20, 21, 22)
a virtual machine which is operable to execute the plurality of applications.
-
-
21. The system of claim 19, wherein the plurality of applications are executable in a platform-independent programming environment.
-
22. The system of claim 19, further comprising:
an access methods class generated from the original class, wherein the access methods class comprises one or more access methods for accessing the instance fields of the static field class.
-
23. A carrier medium comprising program instructions which are computer-executable to implement:
-
extracting zero or more static fields from an original class utilized by any of a plurality of applications, wherein the original class comprises at least one static synchronized method, and wherein each static synchronized method comprises an executable block;
creating a static field class, wherein the static field class comprises zero or more instance fields corresponding to the zero or more static fields, and wherein each instance of the static field class corresponds to one of the plurality of applications; and
replacing each static synchronized method with a corresponding static non-synchronized method, wherein the corresponding static non-synchronized method comprises the executable block from the corresponding static synchronized method which is synchronized on the corresponding instance of the static field class for the utilizing application. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30)
creating one or more access methods for the static fields, wherein the access methods are operable to access the corresponding instance of the static field class based upon the identity of the utilizing application.
-
-
28. The carrier medium of claim 23, wherein extracting the static fields, creating the static field class, and replacing each static synchronized method are performed within a virtual machine which is implemented in accordance with a platform-independent virtual machine specification.
-
29. The carrier medium of claim 23, wherein the carrier medium is a memory medium.
-
30. The carrier medium of claim 23, wherein the carrier medium is a transmission medium.
Specification