Journal "Software Engineering"
a journal on theoretical and applied science and technology
ISSN 2220-3397
Issue N6 2017 year
Today parallel programming is actively used in many areas — business applications, telecommunications, etc. However it is not easy to develop parallel programs. One of the most serious errors of parallel programing is data races. These are situations when two or more parallel program entities (process, threads, etc.) read/write the same variable simultaneously, and one of them writes to it. Such errors are really hard to found, they lead to unpredictable corruption of application data and strange program behavior. There are a lot of approaches to cope with date races, however there is no absolutely reliable one. Dynamic paradigm of data race detection is widely used, but it leads to high overheads. We suggested a dynamic approach in our previous papers, that used synchronization contracts to cope with the overhands problem. Also we presented a toolkit for data race detection in Java-applications. Here we suggest a Java-like language to specify contracts. We also present a number of contract examples for java.util.concurrent library, and guidelines for industrial using the language and the approach.