G52CON: Concepts of Concurrency
|
|
- Morgan Carroll
- 5 years ago
- Views:
Transcription
1 G52CON: Concepts of Concurrency Lecture 11 Synchronisation in Java II Natasha Alechina School of Computer Science
2 Outline of this lecture Mutual exclusion in Java continued (next lecture: more on condition synchronization) synchronized methods and statements in Java limitations of synchronized methods and statements external locks: extra flexibility (and greater potential for errors) Readers and Writers ReadWriteLocks G52CON Lecture 11: Synchronisation in Java II 2
3 Summary of the previous lecture every Java object has an intrinsic lock or monitor `inside it a thread which needs an exclusive and consistent access to the object (recall atomicity, visibility, ordering...) can acquire the object s lock (enter its monitor), do its work, and then release the lock (exit the monitor) the thread which acquired the object s intrinsic lock owns the lock until it releases it; while it owns the lock, no other thread can acquire it. If another thread attempts to acquire the lock, it will block in the object s monitor entry queue a thread which invokes synchronized method foo() on object o acquires o s intrinsic lock, same for executing synchronized(o) { G52CON Lecture 11: Synchronisation in Java II 3
4 Summary of the previous lecture If a thread is executing a synchronized method foo() on an object o or if it is executing statements in synchronized(o) { and an exception is thrown method returns abnormally, the end of synchronized statements is not reached the lock on o is released. This means that a Java program cannot deadlock because it is waiting for a lock to be released by a dead thread, for example. G52CON Lecture 11: Synchronisation in Java II 4
5 Fully synchronised objects The safest (but not necessarily the best) design strategy for mutual exclusion is to use fully synchronized objects in which: all methods are synchronized there are no public fields or other encapsulation violations all methods are finite (so cannot get a lock and go into an infinite loop) all fields are initialised to a consistent state in constructors the state of the object is consistent at both the beginning and end of each method (even in the presence of exceptions). G52CON Lecture 11: Synchronisation in Java II 5
6 Limitations of synchronized synchronized methods and blocks have a number of limitations: there is no way to back off from an attempt to acquire a lock, e.g., to timeout or cancel a lock attempt following an interrupt: this may waste time synchronisation within methods and blocks limits use to strict block structured locking: cannot do hand-over-hand locking (example later) there is no way to alter the semantics of a lock, e.g., read vs write protection there is no access control for condition synchronisation One way these problems can be overcome is by using utility classes to control locking. G52CON Lecture 11: Synchronisation in Java II 6
7 Limitations of synchronized synchronized methods and blocks have a number of limitations: there is no way to back off from an attempt to acquire a lock, e.g., to timeout or cancel a lock attempt following an interrupt synchronisation within methods and blocks limits use to strict block structured locking there is no way to alter the semantics of a lock, e.g., read vs write protection there is no access control for condition synchronisation G52CON Lecture 11: Synchronisation in Java II 7
8 Handling interrupts Threads should periodically check their interrupt status, and if interrupted, shut down: a good place to check is before calling a synchronized method, as we may spend a long time contending for the lock on s blocking waiting for a lock can result in threads being unresponsive to interrupts an interrupted thread may acquire the lock and only after that discover that it is interrupted, so it should release the lock and shut down this wastes time G52CON Lecture 11: Synchronisation in Java II 8
9 Example: just acquire the lock public synchronized void P() throws InterruptedException { while (value == 0) { wait(); --value; This is the semaphore method from the last lecture. Here a thread would just try to execute P() (acquire a lock on the semaphore object). It may already be interrupted when it acquires it so should release it as soon as it notices that its interrupted status is true (hopefully before it starts blocking in wait()). G52CON Lecture 11: Synchronisation in Java II 9
10 Example: checking for interrupts public void P() throws InterruptedException { if (Thread.interrupted()) throw new InterruptedException(); synchronized(this) { while (value == 0) wait(); --value; Here is a more defensive/civilised version (Lea): the method is not synchronized, and before the synchronized statements the thread checks its interrupted status. G52CON Lecture 11: Synchronisation in Java II 10
11 Backing off from lock attempts Even if we check for interrupts before attempting to acquire a lock on a synchronized method or block a thread which is trying to acquire the lock must be prepared to wait indefinitely however, we can implement more flexible locking protocols using utility classes G52CON Lecture 11: Synchronisation in Java II 11
12 The Lock interface java.util.concurrent defines a Lock interface and a number of utility classes (e.g., ReentrantLock) which implement the interface: public interface Lock { void lock(); void lockinterruptibly() throws InterruptedException; boolean trylock(); boolean trylock(long timeout, TimeUnit unit) throws InterruptedException; void unlock(); Condtion newcondition(); G52CON Lecture 11: Synchronisation in Java II 12
13 Replacing synchronized blocks A Lock can be used to replace blocks of the form: synchronized(this) { /* body */ with a before/after construction, e.g.: Lock lock = new ReentrantLock(); lock.lock(); try { // body: catch & handle exceptions if necessary finally { lock.unlock(); G52CON Lecture 11: Synchronisation in Java II 13
14 Replacing synchronized blocks A Lock can be used to replace blocks of the form: synchronized(this) { /* body */ with a before/after construction, e.g.: Lock lock = new ReentrantLock();// or some other lock lock.lock();// or lockinterruptibly() etc. try { // body: catch & handle exceptions if necessary finally { lock.unlock();// now we have to release the lock ourselves or there might be a deadlock! G52CON Lecture 11: Synchronisation in Java II 14
15 Backing off from lock attempts with Lock Unlike synchronzied, the Lock interface supports: polled lock acquisition: trylock() allows control to be regained if all the required locks can t be acquired timed lock acquisition: trylock(timeout) allows control to be regained if the time available for an operation runs out interruptible lock acquisition: lockinterruptibly allows an attempt to aquire a lock to be interrupted (so solves the first problem we discussed, with backing out of lock acquisition after an interrupt) G52CON Lecture 11: Synchronisation in Java II 15
16 Limitations of synchronized synchronized methods and blocks have a number of limitations: there is no way to back off from an attempt to acquire a lock, e.g., to timeout or cancel a lock attempt following an interrupt synchronisation within methods and blocks limits use to strict block structured locking there is no way to alter the semantics of a lock, e.g., read vs write protection there is no access control for condition synchronisation G52CON Lecture 11: Synchronisation in Java II 16
17 Locking is block structured synchronized methods and blocks limit use to strict block structured locking a lock is always released in the same block as it was acquired, regardless of how control exits the block e.g., a lock can t be acquired in one method or block and released in another this prevents potential coding errors, but can be inflexible again we can use utility classes to implement non-block structured locking G52CON Lecture 11: Synchronisation in Java II 17
18 Example: ListUsingLocks for example, we can use Lock objects to lock the nodes of linked list during operations that traverse the list the lock for the next node must be obtained while the lock for the current node is still being held after acquiring the next lock, the current lock is released this allows extremely fine-grained locking and increases potential concurrency only worthwhile in situations where there is a lot of contention. G52CON Lecture 11: Synchronisation in Java II 18
19 Example: ListUsingLocks class ListUsingLocks { static class Node { Object item; Node next; Lock lock = new ReentrantLock(); Node(Object x, Node n) { item = x; next = n; protected Node head; protected synchronized Node gethead() { return head; public synchronized add(object x) { head = new Node(x, head); G52CON Lecture 11: Synchronisation in Java II 19
20 ListUsingLocks 2 boolean search(object x) throws InterruptedException { Node p = gethead(); if (x == null p == null) return false; Node nextp; p.lock.lock(); for (;;) { try { if (x.equals(p.item)) return true; if ((nextp = p.next()) == null) return false; nextp.lock.lock(); finally { p.lock.unlock(); p = nextp; // other methods omitted... G52CON Lecture 11: Synchronisation in Java II 20
21 ListUsingSynchronized // Broken, do not use... boolean search(object x) throws InterruptedException { Node p = gethead(); if (x == null p == null) return false; Node nextp; for (;;) { synchronized(p) { if (x.equals(p.item)) return true; if ((nextp = p.next()) == null) return false; synchronized(nextp) { // can t release the lock on p here... p = nextp; G52CON Lecture 11: Synchronisation in Java II 21
22 Limitations of synchronized synchronized methods and blocks have a number of limitations: there is no way to back off from an attempt to acquire a lock, e.g., to timeout or cancel a lock attempt following an interrupt synchronisation within methods and blocks limits use to strict block structured locking there is no way to alter the semantics of a lock, e.g., read vs write protection there is no access control for condition synchronisation G52CON Lecture 11: Synchronisation in Java II 22
23 Altering the semantics of a lock With synchronized there is no way to alter the semantics of a lock, e.g., read vs write protection this makes it difficult to solve selective mutual exclusion problems, like the Readers and Writers problem (next slide) again, these problems can be overcome is by using utility classes to control locking G52CON Lecture 11: Synchronisation in Java II 23
24 Readers and Writers Given a shared file and a collection of processes that need to access and update the file: reader processes only need to read the file writer processes need to both read and write the file We assume that the file is initially in a consistent state each read or write executed in isolation transforms the file into a new consistent state. G52CON Lecture 11: Synchronisation in Java II 24
25 Correctness vs efficiency The Readers and Writers problem is a special case of the general problem of a number of processes all of which may both read and write to a file: any solution to the general problem will also be a correct solution to the Readers and Writers problem however (much) more efficient solutions are possible for the Readers and Writers problem In general, an efficient solution depends on the specifics of the problem. G52CON Lecture 11: Synchronisation in Java II 25
26 A simple solution One solution to the readers and writers problem would be to make all accesses to the file mutually exclusive: at most one process, whether reader or writer would be able to access the file at a time this is simple and correct but, in general, the performance of such an approach is unacceptable G52CON Lecture 11: Synchronisation in Java II 26
27 Synchronisation requirements To ensure correctness and for maximum efficiency (concurrency) and we require that: if a writer is writing to the file, no other writer may write to the file and no reader may read it; and any number of readers may simultaneously read the file. G52CON Lecture 11: Synchronisation in Java II 27
28 Scope of the problem The Readers and Writers problem is an abstraction of a common class of concurrency problems: the file can be any shared resource, e.g., an area of memory, or a database reading and writing can be any operations: reading doesn t change the resource readers can be allowed to proceed concurrently writing must be mutually exclusive of all readers and all other writers G52CON Lecture 11: Synchronisation in Java II 28
29 Selective mutual exclusion a critical section is a section of code belonging to a process that accesses shared variables, where, to ensure correct behaviour, the critical section must be given mutually exclusive access to the shared variables mutual exclusion is the requirement that, at any given time, at most one process is executing its critical section mutual exclusion applies between critical sections In the Readers and Writers problem, reading need not be not mutually exclusive of reading, but writing must be mutually exclusive of reading and writing. G52CON Lecture 11: Synchronisation in Java II 29
30 The ReadWriteLock interface java.util.concurrent defines a ReadWriteLock interface and a number of utility classes (e.g., ReentrantReadWriteLock) which implement the interface: public interface ReadWriteLock { Lock readlock(); // returns the read lock Lock writelock(); // returns the write lock G52CON Lecture 11: Synchronisation in Java II 30
31 ReadWriteLocks A ReadWriteLock maintains a pair of associated Locks, one for readonly operations and one for writing: the readlock may be held simultaneously by multiple reader threads, so long as there are no writers the writelock is exclusive since the readlock and writelock implement the Lock interface, they support polled, timed and interruptible locking G52CON Lecture 11: Synchronisation in Java II 31
32 Read-Write locks A read-write lock can allow for a greater level of concurrency in accessing shared data than that permitted by a mutual exclusion lock if: the methods in a class can be separated into those that only read internally held data and those that read and write reading is not permitted while writing methods are executing the application has more readers than writers the methods are time consuming, so it pays to introduce more overhead in order to allow concurrency among reader threads. e.g, in accessing a dictionary which is frequently read but seldom modified G52CON Lecture 11: Synchronisation in Java II 32
33 Example RWDictionary class RWDictionary { private final Map<String, Data> m = new TreeMap<String, Data>(); private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); private final Lock r = rwl.readlock(); private final Lock w = rwl.writelock(); // methods follow... G52CON Lecture 11: Synchronisation in Java II 33
34 Example RWDictionary readers // Reader method (does not update the map) public Data get(string key) { r.lock(); try { return m.get(key); finally { r.unlock(); G52CON Lecture 11: Synchronisation in Java II 34
35 Example RWDictionary writers // Writer method (changes the map) public Data put(string key, Data value) { w.lock(); try { return m.put(key, value); finally { w.unlock(); G52CON Lecture 11: Synchronisation in Java II 35
36 Mutual exclusion summary all the synchronisation primitives we have looked at are equivalent in the sense that they all have the same expressive power while it is often helpful to take advantage of the higher level of abstraction offered by monitors, there are situations when other forms of synchronisation are required and we can implement any of these using any of the primitives. more complex forms of locking can and are defined in terms of primitives like Lock. at each level of abstraction we see this pattern of acquiring and releasing locks. G52CON Lecture 11: Synchronisation in Java II 36
37 Formal coursework Implement a Hotel booking system which can be used by multiple concurrent threads (Java program page essay) Methods of Hotel.java class: boolean roombooked(int[] days, int roomnum) boolean bookroom(string bookingref, int[] days, int roomnum) boolean updatebooking(string bookingref, int[] days, int roomnum) throws NoSuchBookingException void cancelbooking(string bookingref) throws NoSuchBookingException Description on Deadline 20 March, submission on cw (coursework id 190). G52CON Lecture 11: Synchronisation in Java II 37
38 The next lecture Condition synchronisation in Java Suggested reading: Lea (2000), chapter 3. G52CON Lecture 11: Synchronisation in Java II 38
CMSC 433 Programming Language Technologies and Paradigms Fall Locks & Conditions
CMSC 433 Programming Language Technologies and Paradigms Fall 2011 Locks & Conditions Intrinsic Lock Example public class RWDictionaryIntrinsicLock { Map m = new TreeMap();
More informationG52CON: Concepts of Concurrency
G52CON: Concepts of Concurrency Lecture 20: Revision and coursework feedback Natasha Alechina School of Computer Science nza@cs.nott.ac.uk Outline of this lecture Exam format Revision Coursework feedback
More informationConcurrency Utilities: JSR-166
Concurrency Concurrency Utilities: JSR-166 Enables development of simple yet powerful multi-threaded applications > Like Collection provides rich data structure handling capability Beat C performance in
More informationConcurrent Programming Benoît Garbinato
Concurrent Programming Benoît Garbinato 1 Processes & threads A process is a unit of execution managed at the level of the operating system Each process has its own address space, i.e., no other process
More informationJava ReentrantLock (Part 1)
Java ReentrantLock (Part 1) Douglas C. Schmidt d.schmidt@vanderbilt.edu www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA Learning
More informationCMSC 330: Organization of Programming Languages. The Dining Philosophers Problem
CMSC 330: Organization of Programming Languages Threads Classic Concurrency Problems The Dining Philosophers Problem Philosophers either eat or think They must have two forks to eat Can only use forks
More informationCMSC 330: Organization of Programming Languages. Threads Classic Concurrency Problems
: Organization of Programming Languages Threads Classic Concurrency Problems The Dining Philosophers Problem Philosophers either eat or think They must have two forks to eat Can only use forks on either
More informationCOMP 322: Fundamentals of Parallel Programming
COMP 322: Fundamentals of Parallel Programming https://wiki.rice.edu/confluence/display/parprog/comp322 Lecture 30: Advanced locking in Java Vivek Sarkar Department of Computer Science Rice University
More informationThe Dining Philosophers Problem CMSC 330: Organization of Programming Languages
The Dining Philosophers Problem CMSC 0: Organization of Programming Languages Threads Classic Concurrency Problems Philosophers either eat or think They must have two forks to eat Can only use forks on
More informationG52CON: Concepts of Concurrency
G52CON: Concepts of Concurrency Lecture 11: Semaphores I" Brian Logan School of Computer Science bsl@cs.nott.ac.uk Outline of this lecture" problems with Peterson s algorithm semaphores implementing semaphores
More informationRecap. Contents. Reenterancy of synchronized. Explicit Locks: ReentrantLock. Reenterancy of synchronise (ctd) Advanced Thread programming.
Lecture 07: Advanced Thread programming Software System Components 2 Behzad Bordbar School of Computer Science, University of Birmingham, UK Recap How to deal with race condition in Java Using synchronised
More informationCS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [THREADS] Frequently asked questions from the previous class survey
CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [THREADS] Threads block when they can t get that lock Wanna have your threads stall? Go ahead, synchronize it all The antidote to this liveness pitfall? Keeping
More informationSSC - Concurrency and Multi-threading Java multithreading programming - Synchronisation (II)
SSC - Concurrency and Multi-threading Java multithreading programming - Synchronisation (II) Shan He School for Computational Science University of Birmingham Module 06-19321: SSC Outline Outline of Topics
More informationG52CON: Concepts of Concurrency
G52CON: Concepts of Concurrency Lecture 4: Atomic Actions Natasha Alechina School of Computer Science nza@cs.nott.ac.uk Outline of the lecture process execution fine-grained atomic actions using fine-grained
More informationThreads and Locks, Part 2. CSCI 5828: Foundations of Software Engineering Lecture 08 09/18/2014
Threads and Locks, Part 2 CSCI 5828: Foundations of Software Engineering Lecture 08 09/18/2014 1 Goals Cover the material presented in Chapter 2 of our concurrency textbook In particular, selected material
More informationBuffer & File Optimization. Cloud Databases DataLab CS, NTHU
Buffer & File Optimization Cloud Databases DataLab CS, NTHU 1 Outline Useful Java Classes for Concurrency Lock Striping Summary of File & Buffer Optimization 2 Outline Useful Java Classes for Concurrency
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Threads Synchronization Refers to mechanisms allowing a programmer to control the execution order of some operations across different threads in a concurrent
More informationJFokus Finding And Solving Java Deadlocks
JFokus 03 - Finding And Solving Java Deadlocks Dr Heinz Kabutz JFokus 03 - Finding and Solving Java Deadlocks Heinz Kabutz German from Cape Town, now lives in Chania PhD Computer Science from University
More informationPrinciples of Software Construction: Concurrency, Part 2
Principles of Software Construction: Concurrency, Part 2 Josh Bloch Charlie Garrod School of Computer Science 1 Administrivia Homework 5a due now Homework 5 framework goals: Functionally correct Well documented
More informationG52CON: Concepts of Concurrency
G52CON: Concepts of Concurrency Lecture 2 Processes & Threads Natasha Alechina School of Computer Science nza@cs.nott.ac.uk Outline of this lecture Java implementations of concurrency process and threads
More informationSummary Semaphores. Passing the Baton any await statement. Synchronisation code not linked to the data
Lecture 4 Monitors Summary Semaphores Good news Simple, efficient, expressive Passing the Baton any await statement Bad news Low level, unstructured omit a V: deadlock omit a P: failure of mutex Synchronisation
More informationG52CON: Concepts of Concurrency
G52CON: Concepts of Concurrency Lecture 6: Algorithms for Mutual Natasha Alechina School of Computer Science nza@cs.nott.ac.uk Outline of this lecture mutual exclusion with standard instructions example:
More informationConcurrent Programming using Threads
Concurrent Programming using Threads Threads are a control mechanism that enable you to write concurrent programs. You can think of a thread in an object-oriented language as a special kind of system object
More informationMore Synchronization; Concurrency in Java. CS 475, Spring 2018 Concurrent & Distributed Systems
More Synchronization; Concurrency in Java CS 475, Spring 2018 Concurrent & Distributed Systems Review: Semaphores Synchronization tool that provides more sophisticated ways (than Mutex locks) for process
More informationJava 8 From Smile To Tears: Emotional Stampedlock
!1 Java 8 From Smile To Tears: Emotional Stampedlock Dr Heinz M. Kabutz Last updated 2014-03-23 !2 Heinz Kabutz l Author of The Java Specialists' Newsletter Articles about advanced core Java programming
More informationMore thread safety and Concurrent collections. Nasser Giacaman CompSci 230: Software Design and Construction
More thread safety and Concurrent collections Nasser Giacaman CompSci 230: Software Design and Construction 1 Today's lecture More on Java's mutual exclusion tools Intrinsic locks Developing our own thread-safe
More informationConcurrency in Object Oriented Programs 3. Object-Oriented Software Development COMP4001 CSE UNSW Sydney Lecturer: John Potter
Concurrency in Object Oriented Programs 3 Object-Oriented Software Development COMP4001 CSE UNSW Sydney Lecturer: John Potter Outline Explicit Locks in Java Techniques for Concurrent Reading State Dependent
More informationLearning from Bad Examples. CSCI 5828: Foundations of Software Engineering Lecture 25 11/18/2014
Learning from Bad Examples CSCI 5828: Foundations of Software Engineering Lecture 25 11/18/2014 1 Goals Demonstrate techniques to design for shared mutability Build on an example where multiple threads
More informationG52CON: Concepts of Concurrency
G52CON: Concepts of Concurrency Lecture 8 Semaphores II Natasha Alechina School of Computer Science nza@cs.nott.ac.uk Outline of this lecture problem solving with semaphores solving Producer-Consumer problems
More informationComputation Abstractions. CMSC 330: Organization of Programming Languages. So, What Is a Thread? Processes vs. Threads. A computer.
CMSC 330: Organization of Programming Languages Threads Computation Abstractions t1 t2 t1 t3 t2 t1 p1 p2 p3 p4 CPU 1 CPU 2 A computer t4 t5 Processes (e.g., JVM s) Threads CMSC 330 2 Processes vs. Threads
More informationNortheastern University - Seattle CS5510 Professor Ian Gorton
Northeastern University - Seattle CS5510 Professor Ian Gorton Northeastern University 1 Week 10 CONCURRENCY II Northeastern University 2 http://jcip.net/ 3 Overview Loops/recursion and threads Readers
More informationECE 587 Hardware/Software Co-Design Lecture 07 Concurrency in Practice Shared Memory I
ECE 587 Hardware/Software Co-Design Spring 2018 1/15 ECE 587 Hardware/Software Co-Design Lecture 07 Concurrency in Practice Shared Memory I Professor Jia Wang Department of Electrical and Computer Engineering
More informationOnly one thread can own a specific monitor
Java 5 Notes Threads inherit their priority and daemon properties from their creating threads The method thread.join() blocks and waits until the thread completes running A thread can have a name for identification
More informationLecture 29: Java s synchronized statement
COMP 322: Fundamentals of Parallel Programming Lecture 29: Java s synchronized statement Vivek Sarkar Department of Computer Science, Rice University vsarkar@rice.edu https://wiki.rice.edu/confluence/display/parprog/comp322
More informationDr.-Ing. Michael Eichberg
Dr.-Ing. Michael Eichberg Concurrent Programming (Overview of the Java concurrency model and its relationship to other models...) (some slides are based on slides by Andy Wellings) 2 Processes vs. Threads
More informationCOMP 322: Fundamentals of Parallel Programming. Lecture 30: Java Synchronizers, Dining Philosophers Problem
COMP 322: Fundamentals of Parallel Programming Lecture 30: Java Synchronizers, Dining Philosophers Problem Vivek Sarkar, Shams Imam Department of Computer Science, Rice University Contact email: vsarkar@rice.edu,
More informationConcurrent Red-Black Trees
DisCoVeri Group, York University, Toronto March 7, 2011 Red-Black Tree A red-black tree is a binary search tree the nodes of which are coloured either red or black and the root is black, every leaf is
More informationCHAPTER 6: PROCESS SYNCHRONIZATION
CHAPTER 6: PROCESS SYNCHRONIZATION The slides do not contain all the information and cannot be treated as a study material for Operating System. Please refer the text book for exams. TOPICS Background
More informationFrom Smile To Tears: Emotional StampedLock
1 From Smile To Tears: Emotional StampedLock Dr Heinz M. Kabutz Last updated 2013-11-05 From Smile to Tears: Emotional StampedLock Author of The Java Specialists' Newsletter Articles about advanced core
More informationJava Monitors. Parallel and Distributed Computing. Department of Computer Science and Engineering (DEI) Instituto Superior Técnico.
Java Monitors Parallel and Distributed Computing Department of Computer Science and Engineering (DEI) Instituto Superior Técnico October 19, 2010 Monteiro, Costa (DEI / IST) Parallel and Distributed Computing
More informationCMSC 132: Object-Oriented Programming II. Threads in Java
CMSC 132: Object-Oriented Programming II Threads in Java 1 Problem Multiple tasks for computer Draw & display images on screen Check keyboard & mouse input Send & receive data on network Read & write files
More informationModels of concurrency & synchronization algorithms
Models of concurrency & synchronization algorithms Lecture 3 of TDA383/DIT390 (Concurrent Programming) Carlo A. Furia Chalmers University of Technology University of Gothenburg SP3 2016/2017 Today s menu
More informationChair of Software Engineering. Java and C# in depth. Carlo A. Furia, Marco Piccioni, Bertrand Meyer. Java: concurrency
Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Java: concurrency Outline Java threads thread implementation sleep, interrupt, and join threads that return values Thread synchronization
More informationNeed for synchronization: If threads comprise parts of our software systems, then they must communicate.
Thread communication and synchronization There are two main aspects to Outline for Lecture 19 multithreaded programming in Java: I. Thread synchronization. thread lifecycle, and thread synchronization.
More informationCSE 332: Locks and Deadlocks. Richard Anderson, Steve Seitz Winter 2014
CSE 332: Locks and Deadlocks Richard Anderson, Steve Seitz Winter 2014 1 Recall Bank Account Problem class BankAccount { private int balance = 0; synchronized int getbalance() { return balance; } synchronized
More informationIV. Process Synchronisation
IV. Process Synchronisation Operating Systems Stefan Klinger Database & Information Systems Group University of Konstanz Summer Term 2009 Background Multiprogramming Multiple processes are executed asynchronously.
More informationCSE332: Data Abstractions Lecture 22: Shared-Memory Concurrency and Mutual Exclusion. Tyler Robison Summer 2010
CSE332: Data Abstractions Lecture 22: Shared-Memory Concurrency and Mutual Exclusion Tyler Robison Summer 2010 1 Toward sharing resources (memory) So far we ve looked at parallel algorithms using fork-join
More informationJava Semaphore (Part 1)
Java Semaphore (Part 1) Douglas C. Schmidt d.schmidt@vanderbilt.edu www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA Learning Objectives
More informationCS11 Java. Fall Lecture 7
CS11 Java Fall 2006-2007 Lecture 7 Today s Topics All about Java Threads Some Lab 7 tips Java Threading Recap A program can use multiple threads to do several things at once A thread can have local (non-shared)
More informationG Programming Languages Spring 2010 Lecture 13. Robert Grimm, New York University
G22.2110-001 Programming Languages Spring 2010 Lecture 13 Robert Grimm, New York University 1 Review Last week Exceptions 2 Outline Concurrency Discussion of Final Sources for today s lecture: PLP, 12
More informationMultiThreading 07/01/2013. Session objectives. Introduction. Introduction. Advanced Java Programming Course
Advanced Java Programming Course MultiThreading By Võ Văn Hải Faculty of Information Technologies Industrial University of Ho Chi Minh City Session objectives Introduction Creating thread Thread class
More informationAdvanced Java Programming Course. MultiThreading. By Võ Văn Hải Faculty of Information Technologies Industrial University of Ho Chi Minh City
Advanced Java Programming Course MultiThreading By Võ Văn Hải Faculty of Information Technologies Industrial University of Ho Chi Minh City Session objectives Introduction Creating thread Thread class
More informationMultitasking Multitasking allows several activities to occur concurrently on the computer. A distinction is usually made between: Process-based multit
Threads Multitasking Multitasking allows several activities to occur concurrently on the computer. A distinction is usually made between: Process-based multitasking Thread-based multitasking Multitasking
More informationWhat is a thread anyway?
Concurrency in Java What is a thread anyway? Smallest sequence of instructions that can be managed independently by a scheduler There can be multiple threads within a process Threads can execute concurrently
More informationProgramming Language Concepts: Lecture 11
Programming Language Concepts: Lecture 11 Madhavan Mukund Chennai Mathematical Institute madhavan@cmi.ac.in PLC 2011, Lecture 11, 01 March 2011 Concurrent Programming Monitors [Per Brinch Hansen, CAR Hoare]
More informationOperating Systems CMPSCI 377 Spring Mark Corner University of Massachusetts Amherst
Operating Systems CMPSCI 377 Spring 2017 Mark Corner University of Massachusetts Amherst Clicker Question #1 If we have 100 threads and 100 processors, how often does Hello get printed? (A) 100 times per
More informationLecture 27: Safety and Liveness Properties, Java Synchronizers, Dining Philosophers Problem
COMP 322: Fundamentals of Parallel Programming Lecture 27: Safety and Liveness Properties, Java Synchronizers, Dining Philosophers Problem Mack Joyner and Zoran Budimlić {mjoyner, zoran}@rice.edu http://comp322.rice.edu
More informationCS 159: Parallel Processing
Outline: Concurrency using Java CS 159: Parallel Processing Spring 2007 Processes vs Threads Thread basics Synchronization Locks Examples Avoiding problems Immutable objects Atomic operations High"level
More informationSynchronization SPL/2010 SPL/20 1
Synchronization 1 Overview synchronization mechanisms in modern RTEs concurrency issues places where synchronization is needed structural ways (design patterns) for exclusive access 2 Overview synchronization
More information3/25/14. Lecture 25: Concurrency. + Today. n Reading. n P&C Section 6. n Objectives. n Concurrency
+ Lecture 25: Concurrency + Today n Reading n P&C Section 6 n Objectives n Concurrency 1 + Concurrency n Correctly and efficiently controlling access by multiple threads to shared resources n Programming
More informationCS 351 Design of Large Programs Threads and Concurrency
CS 351 Design of Large Programs Threads and Concurrency Brooke Chenoweth University of New Mexico Spring 2018 Concurrency in Java Java has basic concurrency support built into the language. Also has high-level
More informationSharing Objects Ch. 3
Sharing Objects Ch. 3 Visibility What is the source of the issue? Volatile Dekker s algorithm Publication and Escape Thread Confinement Immutability Techniques of safe publication Assignment 1 Visibility
More informationSynchronization II: EventBarrier, Monitor, and a Semaphore. COMPSCI210 Recitation 4th Mar 2013 Vamsi Thummala
Synchronization II: EventBarrier, Monitor, and a Semaphore COMPSCI210 Recitation 4th Mar 2013 Vamsi Thummala Check point: Mission in progress Master synchronization techniques Develop best practices for
More informationCSE 451: Operating Systems Winter Lecture 7 Synchronization. Steve Gribble. Synchronization. Threads cooperate in multithreaded programs
CSE 451: Operating Systems Winter 2005 Lecture 7 Synchronization Steve Gribble Synchronization Threads cooperate in multithreaded programs to share resources, access shared data structures e.g., threads
More informationre-exam Concurrent Programming tda383/dit390 Date: Time: 14:00 18:00 Place: Maskinhuset (M)
re-exam Concurrent Programming tda383/dit390 Date: 2016-08-22 Time: 14:00 18:00 Place: Maskinhuset (M) Responsible Michał Pałka 031 772 10 79 Result Available no later than 2016-09-12 Aids Max 2 books
More informationG52CON: Concepts of Concurrency
G52CON: Concepts of Concurrency Lecture 1: Introduction Brian Logan School of Computer Science bsl@cs.nott.ac.uk Outline of this lecture" why concurrency... applications of concurrency sequential vs concurrent
More informationCONCURRENT API AND PARALLEL PROGRAMMING
MODULE 11 CONCURRENT API AND PARALLEL PROGRAMMING Module 11.A THREAD MODEL: RUNNABLE, CALLABLE, FUTURE, FUTURETASK Threads > What are threads? Threads are a virtual CPU. > The three parts of at thread
More informationPrinciples of Software Construction: Concurrency, Part 2
Principles of Software Construction: Concurrency, Part 2 Josh Bloch Charlie Garrod School of Computer Science 1 Administrivia Homework 5a due now You will get early feedback tomorrow! Thank your TAs 2nd
More informationDaemon thread, 7 Deadlock, 27
Index A ArrayBlockingQueue, 127 128 Atomic variables AtomicLong, 132 contention-reduction techniques, 132 counters and sequence generators, 131 getnextid() class, 131 intrinsic lock, 131 java.util.concurrent.atomic
More informationCMSC 433 Programming Language Technologies and Paradigms. Composing Objects
CMSC 433 Programming Language Technologies and Paradigms Composing Objects Composing Objects To build systems we often need to Create thread safe objects Compose them in ways that meet requirements while
More informationCMSC 132: Object-Oriented Programming II
CMSC 132: Object-Oriented Programming II Synchronization in Java Department of Computer Science University of Maryland, College Park Multithreading Overview Motivation & background Threads Creating Java
More informationSFDV3006 Concurrent Programming
SFDV3006 Concurrent Programming Lecture 6 Deadlocks, livelocks, Starvation Introduction Last week we covered semaphore and how to use them for both synchronization and condition synchronization This week
More informationCOMP31212: Concurrency A Review of Java Concurrency. Giles Reger
COMP31212: Concurrency A Review of Java Concurrency Giles Reger Outline What are Java Threads? In Java, concurrency is achieved by Threads A Java Thread object is just an object on the heap, like any other
More informationDr.-Ing. Michael Eichberg
Dr.-Ing. Michael Eichberg Concurrent Programming (Overview of the Java concurrency model and its relationship to other models...) (some slides are based on slides by Andy Wellings) Processes vs. Threads
More informationSynchronization. CSE 2431: Introduction to Operating Systems Reading: Chapter 5, [OSC] (except Section 5.10)
Synchronization CSE 2431: Introduction to Operating Systems Reading: Chapter 5, [OSC] (except Section 5.10) 1 Outline Critical region and mutual exclusion Mutual exclusion using busy waiting Sleep and
More informationPart IV Other Systems: I Java Threads
Part IV Other Systems: I Java Threads Spring 2019 C is quirky, flawed, and an enormous success. 1 Dennis M. Ritchie Java Threads: 1/6 Java has two ways to create threads: Create a new class derived from
More informationProcess Management And Synchronization
Process Management And Synchronization In a single processor multiprogramming system the processor switches between the various jobs until to finish the execution of all jobs. These jobs will share the
More informationCSE332: Data Abstractions Lecture 19: Mutual Exclusion and Locking
CSE332: Data Abstractions Lecture 19: Mutual Exclusion and Locking James Fogarty Winter 2012 Including slides developed in part by Ruth Anderson, James Fogarty, Dan Grossman Banking Example This code is
More informationChapter 6: Synchronization. Operating System Concepts 8 th Edition,
Chapter 6: Synchronization, Silberschatz, Galvin and Gagne 2009 Outline Background The Critical-Section Problem Peterson s Solution Synchronization Hardware Semaphores Classic Problems of Synchronization
More informationConcurrent Queues, Monitors, and the ABA problem. Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit
Concurrent Queues, Monitors, and the ABA problem Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Queues Often used as buffers between producers and consumers
More informationDUBLIN CITY UNIVERSITY
DUBLIN CITY UNIVERSITY SEMESTER ONE RESIT EXAMINATIONS 2012 MODULE TITLE: MODULE CODE: COURSE: Concurrent Programming CA463/CA463D BSc. in Computer Applications (Software Engineering Stream), Study Abroad
More information10/17/ Gribble, Lazowska, Levy, Zahorjan 2. 10/17/ Gribble, Lazowska, Levy, Zahorjan 4
Temporal relations CSE 451: Operating Systems Autumn 2010 Module 7 Synchronization Instructions executed by a single thread are totally ordered A < B < C < Absent synchronization, instructions executed
More informationProblems with Concurrency. February 19, 2014
with Concurrency February 19, 2014 s with concurrency interleavings race conditions dead GUI source of s non-determinism deterministic execution model 2 / 30 General ideas Shared variable Access interleavings
More informationThe New Java Technology Memory Model
The New Java Technology Memory Model java.sun.com/javaone/sf Jeremy Manson and William Pugh http://www.cs.umd.edu/~pugh 1 Audience Assume you are familiar with basics of Java technology-based threads (
More informationJava Threads. COMP 585 Noteset #2 1
Java Threads The topic of threads overlaps the boundary between software development and operation systems. Words like process, task, and thread may mean different things depending on the author and the
More information27/04/2012. We re going to build Multithreading Application. Objectives. MultiThreading. Multithreading Applications. What are Threads?
Objectives MultiThreading What are Threads? Interrupting threads Thread properties By Võ Văn Hải Faculty of Information Technologies Summer 2012 Threads priorities Synchronization Callables and Futures
More informationCondition Variables CS 241. Prof. Brighten Godfrey. March 16, University of Illinois
Condition Variables CS 241 Prof. Brighten Godfrey March 16, 2012 University of Illinois 1 Synchronization primitives Mutex locks Used for exclusive access to a shared resource (critical section) Operations:
More informationMultiprocessor System. Multiprocessor Systems. Bus Based UMA. Types of Multiprocessors (MPs) Cache Consistency. Bus Based UMA. Chapter 8, 8.
Multiprocessor System Multiprocessor Systems Chapter 8, 8.1 We will look at shared-memory multiprocessors More than one processor sharing the same memory A single CPU can only go so fast Use more than
More informationCST242 Concurrency Page 1
CST242 Concurrency Page 1 1 2 3 4 5 6 7 9 Concurrency CST242 Concurrent Processing (Page 1) Only computers with multiple processors can truly execute multiple instructions concurrently On single-processor
More informationProgramming in Java
320341 Programming in Java Fall Semester 2014 Lecture 11: Introduction to Concurrency Instructor: Slides: Jürgen Schönwälder Bendick Mahleko Introduction Multithreaded Programs - A program represents separate,
More informationChapter 5 Asynchronous Concurrent Execution
Chapter 5 Asynchronous Concurrent Execution Outline 5.1 Introduction 5.2 Mutual Exclusion 5.2.1 Java Multithreading Case Study 5.2.2 Critical Sections 5.2.3 Mutual Exclusion Primitives 5.3 Implementing
More informationProcess Synchronization: Semaphores. CSSE 332 Operating Systems Rose-Hulman Institute of Technology
Process Synchronization: Semaphores CSSE 332 Operating Systems Rose-Hulman Institute of Technology Critical-section problem solution 1. Mutual Exclusion - If process Pi is executing in its critical section,
More informationOverview. CMSC 330: Organization of Programming Languages. Concurrency. Multiprocessors. Processes vs. Threads. Computation Abstractions
CMSC 330: Organization of Programming Languages Multithreaded Programming Patterns in Java CMSC 330 2 Multiprocessors Description Multiple processing units (multiprocessor) From single microprocessor to
More informationThreads and Locks. Chapter Introduction Locks
Chapter 1 Threads and Locks 1.1 Introduction Java virtual machines support multiple threads of execution. Threads are represented in Java by the Thread class. The only way for a user to create a thread
More informationOperating Systems. Designed and Presented by Dr. Ayman Elshenawy Elsefy
Operating Systems Designed and Presented by Dr. Ayman Elshenawy Elsefy Dept. of Systems & Computer Eng.. AL-AZHAR University Website : eaymanelshenawy.wordpress.com Email : eaymanelshenawy@yahoo.com Reference
More informationConcurrency in Object Oriented
Concurrency in Object Oriented Programs 5 Object-Oriented Software Development COMP4001 CSE UNSW Sydney Lecturer: John Potter 1 Outline Deadlocks Dining Philosophers Lock Ordering Reducing Lock Granularity
More informationMultiprocessor Systems. COMP s1
Multiprocessor Systems 1 Multiprocessor System We will look at shared-memory multiprocessors More than one processor sharing the same memory A single CPU can only go so fast Use more than one CPU to improve
More informationMonitors; Software Transactional Memory
Monitors; Software Transactional Memory Parallel and Distributed Computing Department of Computer Science and Engineering (DEI) Instituto Superior Técnico March 17, 2016 CPD (DEI / IST) Parallel and Distributed
More informationChapter 6: Process Synchronization
Chapter 6: Process Synchronization Objectives Introduce Concept of Critical-Section Problem Hardware and Software Solutions of Critical-Section Problem Concept of Atomic Transaction Operating Systems CS
More informationDealing with Issues for Interprocess Communication
Dealing with Issues for Interprocess Communication Ref Section 2.3 Tanenbaum 7.1 Overview Processes frequently need to communicate with other processes. In a shell pipe the o/p of one process is passed
More information