The Java EE 6 Tutorial

Bean-Managed Concurrency

Singletons that use bean-managed concurrency allow full concurrent access to all the business and timeout methods in the singleton. The developer of the singleton is responsible for ensuring that the state of the singleton is synchronized across all clients. Developers who create singletons with bean-managed concurrency are allowed to use the Java programming language synchronization primitives, such as synchronization and volatile, to prevent errors during concurrent access.

Add a @ConcurrencyManagement annotation at the class level of the singleton to specify bean-managed concurrency:

@ConcurrencyManagement(BEAN)
@Singleton
public class AnotherSingletonBean { ... }