Defining a Catalog of Programming Anti-Patterns for Concurrent Java
نویسندگان
چکیده
Many programming languages, including Java, provide support for concurrency. Although concurrency has many benefits with respect to performance, concurrent software can be problematic to develop and test because of the many different thread interleavings. We propose a comprehensive set of concurrency programming anti-patterns that can be used by Java developers to aid in avoiding many of the known pitfalls associated with concurrent software development. Our concurrency anti-patterns build upon our previous work as well as the work of others in the research community. Keywords-concurrency, anti-patterns, bug patterns, Java, deadlock, race conditions, static analysis.
منابع مشابه
Concurrent programming in Java - design principles and patterns
Bargaining with reading habit is no need. Reading is not kind of something sold that you can take or not. It is a thing that will change your life to life better. It is the thing that will give you many things around the world and this universe, in the real world and here after. As what will be given by this concurrent programming in java design principles and patterns, how can you bargain with...
متن کاملConcurrent Constraint-Based Memory Machines: A Framework for Java Memory Models
A central problem in extending the von Neumann architecture to petaflop computers with millions of hardware threads and with a shared memory is defining the memory model [Lam79,AG95,APP99]. Such a model must specify the behavior of concurrent (conditional) reads and writes to the same memory locations. We present a simple, general framework for the specification of memory models based on an abs...
متن کاملBest Paper Award at ICST ’13 CHECK-THEN-ACT Misuse of Java Concurrent Collections
Concurrent collections provide thread-safe, highly-scalable operations, and are widely used in practice. However, programmers can misuse these concurrent collections when composing two operations where a check on the collection (such as non-emptiness) precedes an action (such as removing an entry). Unless the whole composition is atomic, the program contains an atomicity violation bug. In this ...
متن کاملConcurrent Programming in Java: Language and Libraries
Java’s direct support for concurrency has enticed many programmers to tackle concurrent programming using this new language. The use of concurrency adds a new dimension of complexity to application development and introduces its own unique set of problems. We look at concurrency in the context of the latest version of the Java language and libraries, and employ proven design-patterns and coding...
متن کاملOn the Effectiveness of Contracts as Test Oracles in the Detection and Diagnosis of Faults in Concurrent Object- Oriented Software
Design by Contract (DbC) is a software development methodology that focuses on clearly defining the interfaces between components to produce better quality object-oriented software. The idea behind DbC is that a method defines a contract stating the requirements a client needs to fulfill to use it, the precondition, and the properties it ensures after its execution, the postcondition. Though th...
متن کامل