“Sometimes” and “not never” revisited: on branching versus linear time temporal logic
Journal of the ACM (JACM) - The MIT Press scientific computation series
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Computing Surveys (CSUR)
ACM SIGPLAN Notices
A More Expressive Monitor for Concurrent Java Programming
Euro-Par '00 Proceedings from the 6th International Euro-Par Conference on Parallel Processing
The PlusCal Algorithm Language
ICTAC '09 Proceedings of the 6th International Colloquium on Theoretical Aspects of Computing
Modeling Concurrent Systems with Shared Resources
FMICS '09 Proceedings of the 14th International Workshop on Formal Methods for Industrial Critical Systems
A model-driven approach to teaching concurrency
ACM Transactions on Computing Education (TOCE)
Hi-index | 0.00 |
Java monitors as implemented in the java.util.concurrent.locks package provide no-priority nonblocking monitors. That is, threads signalled after blocking on a condition queue do not proceed immediately, but they have to wait until both the signalling thread and possibly some of the others which have requested the lock release it. This can be a source of errors (if threads that get in the middle leave the monitor in a state incompatible with the signalled thread re-entry) or inefficiency (if repeated evaluation of preconditions is used to ensure safe re-entry). A concise implementation of priority nonblocking monitors in Java is presented. Curiously, our monitors are implemented on top of the standard no-priority implementation. In order to verify the correctness of our solution, a formal transition model (that includes a formalisation of Java locks and conditions) has been defined and checked using Uppaal. This model has been adapted to PlusCal in order to obtain a formal proof in TLA independent of the number of threads.