In multicore era, programmers exploit concurrent programming to gain performance and responsiveness benefits. However, concurrent programs are difficult to write: the programmer has to balance two conflicting forces, thread safety and performance. To make concurrent programming easier, modern programming languages provide many kinds of concurrent constructs, such as threads, asynchronous tasks, concurrent collections, etc. However, despite the existence of these concurrent constructs, we know little about how developers use them. On the other hand, although existing API documentation teach developers how to use concurrent constructs, developers can still misuse and underuse them. In this dissertation, we study the use, misuse, and und...
The rise in the number of cores in a processor has resulted in computer programmers needing to write...
The Java language supports the use of monitors, sockets, and remote method invocation for concurrent...
Software components expose Application Programming Interfaces (APIs) as a means to access their func...
In multicore era, programmers exploit concurrent programming to gain performance and responsiveness ...
Running compute-intensive or blocking I/O operations in the UI event thread of smartphone apps can s...
Running compute-intensive or blocking I/O operations in the UI event thread of smartphone apps can s...
To avoid unresponsiveness, a core part of mobile development is asynchronous programming. Android pr...
AbstractEvolving and refactoring concurrent Java software can be error-prone, resulting in race cond...
Parallelizing existing sequential programs to run efficiently on multicores is hard. The Java 5 pack...
Parallelizing existing sequential programs to run ef-ficiently on multicores is hard. The Java 5 pac...
Concurrent collections provide thread-safe, highly-scalable operations, and are widely used in prac...
It is often difficult to analyse why a program executes more slowly than intended. This is particula...
Parallelizing existing sequential programs to run efficiently on multicores is hard. The Java 5 pack...
Concurrency is becoming the norm in modern software because multicores are now everywhere. Developer...
Abstract—Concurrent collections provide thread-safe, highly-scalable operations, and are widely used...
The rise in the number of cores in a processor has resulted in computer programmers needing to write...
The Java language supports the use of monitors, sockets, and remote method invocation for concurrent...
Software components expose Application Programming Interfaces (APIs) as a means to access their func...
In multicore era, programmers exploit concurrent programming to gain performance and responsiveness ...
Running compute-intensive or blocking I/O operations in the UI event thread of smartphone apps can s...
Running compute-intensive or blocking I/O operations in the UI event thread of smartphone apps can s...
To avoid unresponsiveness, a core part of mobile development is asynchronous programming. Android pr...
AbstractEvolving and refactoring concurrent Java software can be error-prone, resulting in race cond...
Parallelizing existing sequential programs to run efficiently on multicores is hard. The Java 5 pack...
Parallelizing existing sequential programs to run ef-ficiently on multicores is hard. The Java 5 pac...
Concurrent collections provide thread-safe, highly-scalable operations, and are widely used in prac...
It is often difficult to analyse why a program executes more slowly than intended. This is particula...
Parallelizing existing sequential programs to run efficiently on multicores is hard. The Java 5 pack...
Concurrency is becoming the norm in modern software because multicores are now everywhere. Developer...
Abstract—Concurrent collections provide thread-safe, highly-scalable operations, and are widely used...
The rise in the number of cores in a processor has resulted in computer programmers needing to write...
The Java language supports the use of monitors, sockets, and remote method invocation for concurrent...
Software components expose Application Programming Interfaces (APIs) as a means to access their func...