Info 408 Distributed Applications Programming Exercise sheet nb. 4
|
|
- Steven Sullivan
- 5 years ago
- Views:
Transcription
1 Lebanese University Info 408 Faculty of Science Section I 1 Custom Connections Info 408 Distributed Applications Programming Exercise sheet nb. 4 When accessing a server represented by an RMI object identified by a name in the registry, the connection obtained ignores the identity of the client. When there s a need to customize services, we must configure a way to identify the client. It is not the case to provide a high level of security, but simply to facilitate the programming of the client and the server programs by allowing custom connections. To illustrate this problem, we propose a simple model in which the server displays (server-side only) the message received from the customer and by prefixing the message with the identity of the client (eg his username). 1.1 Solution by ID Exercise 1 The classical solution (but the less object oriented) is based on assigning a temporary ID. We consider the following interface for the server: ServerIDInterface public interface ServerIDInterface extends Remote public long login(string username, String password) throws RemoteException; public void logout(long ID) throws RemoteException; public void postmessage(long ID, String message) throws RemoteException; The principle is very simple: when a client wants to connect, he gets a remote reference to an implementation of ServerIDInterface through the registry. Then, he calls the login method to obtain a temporary identifier, represented by a long. If the login is not possible, the method throws eventually an exception. Once the client is connected, all the interactions with the server are done using the temporary identifier, especially the method postmessage that displays the message on the server. The logout method invalidates the temporary identifier. 1. Implement the class UserInfo that will be used by the server to represent a logged in user. The class should include the name of the user, the temporary identifier associated to the user and the subscription date of this identifier (to manage the timeout). 2. Implement the server by respecting the following guidelines: Identifiers must be unique (two connected users can not have the same identifier); It should be easy to associate an identifier to a user; The server must verify the age of the connection before allowing an action by the client. The server should implement a local method to add registered users (as couples of username and password). When starting up the server, add a few users for testing. 3. Implement a command line client to test the system. The ideal is to display the obtained login identifier in order to restart several times the client without having to reconnect on each time. 1
2 1.2 Solution by dedicated object Exercise 2 The proposed solution in the previous exercise is not object-oriented and exposes too much technical details. A simpler solution can be obtained by creating dedicated objects. To do this, we should separate the connection from the services. Thus, we obtein two interfaces: ServerLoginInterface public interface ServerLoginInterface extends Remote public ServerInterface login(string username,string password) throws RemoteException; ServerInterface public interface ServerInterface extends Remote public void postmessage(string message) throws RemoteException; On the client-side, the new solution is used in the following way: The client gets through the registry a remote reference to an implementation of ServerLoginInterface (there is only one instance of this object). The client calls the login method which returns a remote reference to an implementation of ServerInterface. All the interactions are thus made exclusively with ServerInterface. The idea is that each call to login produces a new object implementing ServerInterface. 1. Write a class called Display to be used on the server to print the message received on the server s monitor. This class has no practical value (we could do a direct call to System.out.println), but it can simulate the development of a complex server. 2. Write an implementation of ServerInterface that preserves the identity of the client who uses it and passes through the Display class to produce its displays. 3. Write an implementation of ServerLoginInterface. As in the previous exercise, prepare some registered users for the testing. 4. Implement a command line client to test the system. Since we should retain here the reference to the remote object in order for the mechanism to work correctly, the client should make a series of interactions to actually test the server. 2 Asynchronous Communication RMI is a RPC (remote procedure call) mechanism, which by default, it s a synchronous model: the client waits for the server to send him back a response. This model works well but it is very restrictive, especially in situations where the processing on the server can be relatively long. 2.1 Solution by using threads client-side If the server does not provide means for an asynchronous call, the only solution is to go through a thread on the client. 2
3 2.1.1 Basic synchronization When you call the start method of a thread, it starts and the method returns the control immediately, without waiting for the end of the execution of the run method. In some circumstances, it is useful that threads can synchronize with one another. Except for very simple cases, this requires cooperation between threads; methods stop, suspend and resume of the Thread class are deprecated. The simplest primitive for synchronization is the join method. If t is a thread, the t.join() call blocks the calling thread until t ends. The join method has variants to indicate a maximum waiting time. In addition, all versions can return the InterruptedException exception that must thus be taken into account. Exercise 1 Write a Java program with two threads (in addition to the main thread) that each displays a list of integers between 1 and n, where n is the parameter of their constructor. In order to visualize the scheduling between threads, you can introduce a random pause between two displays. Display a message in the main method when both threads complete their execution. Less rudimentary synchronization requests full support by the programmer. It should for example that the run method of the thread regularly tests the value of a variable (accessible from another thread) to check whether it should continue to operate. As a first step, we will implement it using busy waiting (which is a bad idea, see the next section). Exercise 2 Modify the thread of exercise 1 to incorporate the following features: A private thread variable, active, which indicates whether the thread should run or not. This variable is initialized to true (the thread can run) by the constructor. The class provides a method to suspend the thread and another one to restart it, by changing the value of active; The run method shows always the integers between 1 and n, but by testing between each display the value of active. If active is false, the thread pauses (duration to be determined), then tests the variable again, etc... Write a program that performs a demonstration of the suspension mechanism thus obtained (with at least two threads in addition to the main thread) Advanced synchronization The problem of the previous exercise tackled the use of busy waiting (the running thread waits to be awakened) that wastes resources and is a very coarse synchronization. Fortunately, Java provides a subtle and effective mechanism to avoid busy waiting. The system is based on the wait, notify and notifyall methods of the Object class. Any Java object inherits from Object and therefore has a lock used when working with multiple threads. In certain circumstances, the use of an object by a thread requires the latter to acquire the lock of the object. If the lock is already owned by another thread, the newly arrived thread is blocked (passively) until the lock owner releases it. Both situations require the acquisition of the lock: 1. a method can be declared synchronized: in this case, it is used after obtaining the lock by the calling thread. As the lock is global to the object, no other thread can call another synchronized method of the same object (other methods are normally accessible); 2. you can use the following construction: synchronized(stuff) //instructions 3
4 The block thus constructed can only be executed after acquiring the lock of the object designated by stuff. When a thread has a lock on an object, it can release it in a particular way by calling the wait method (of the object). The principle of this method is that the thread goes to sleep (passively) after releasing the lock. The only way to wake up the thread is while another thread is to become the owner of the lock for the object and to call the notify method (or notifyall). This method wakes up one of the threads sleeping on the object (the notifyall method wakes them all). In terms of technical details, the wait method has variants with maximum waiting time and all versions can return the InterruptedException exception. Exercise 3 Modify the thread of exercise 1 in order to replace the busy waiting by a passive waiting mechanism based on wait and notify. You should proceed as follows: Replace the busy waiting by a synchronized block in which the pause is replaced by a wait; The thread methods of control must be declared synchronized and the restart method should use notify to wake up the thread. Reuse the demonstration program to test the suspension mechanism thus obtained Asynchronous RMI call To make an asynchronous RMI call client-side, it is sufficient to encapsulate the call in a thread as shown in the following exercise: Exercise 4 Write an RMI server that offers the classical echo method (it returns to the client the parameter of the call), but with a significant pause at the beginning of the method in order to simulate a complex calculation (you can randomize the length of the pause). Write a client program that performs the call asynchronously as follows: Write a Thread object (or Runnable) that performs the call and displays the result; Start the call in the main thread and run in parallel (still in the main principal thread) any operations (such as some displays interspersed with pauses). The problem with this exercise is that, it is the thread that executes the call that decides to display the result. In some situations, this is not really acceptable, hence the following exercise: Exercise 5 Modify the object asynchronous call of the previous exercise to get the following features: The run method should no longer display the result but simply store it in an adapted variable ; The object is to provide a method to know if the calculation is complete; The object is to provide a blocking method that returns the result of the call (blocking will be based on the couple wait/notify). Provide a demonstration of the features of this new asynchronous call. 4
5 2.2 Solution by pulling If the server provides services for asynchronous calls, the client programming is simplified. We start the server part by an API of type pulling: the client initiates an operation on the server, and then periodically asks the server if the operation is completed. The client is active and generally perform an busy waiting, as in the following exercise: Exercise 6 We consider the following remote interface: PullServerInterface public interface PullServerInterface extends Remote public DoSomethingResultInterface dosomething(string param) throws RemoteException; The dosomething method is asynchronous, that is to say, it must run a server-side calculation (using a thread) and returning the command as quickly as possible to the client. In order for the client to get the result of the operation, the method returns a reference to a remote object DoSomethingResultInterface. Here is the interface in question: DoSomethingResultInterface public interface DoSomethingResultInterface extends Remote public boolean isdone() throws RemoteException; public String getresult() throws RemoteException; The IsDone method returns true if and only if the server has completed the calculations for the operation. The getresult method returns the result of the operation (null if it is not completed). 1. implement DoSomethingResultInterface by a class that implements also the Runnable interface (and which extends UnicastRemoteObject): the idea is to have the code to be run (the run method) with the storage mechanism (for the isdone and getresult methods) and the RMI server (due to UnicastRemoteObject). For calculations of dosomething, we will merely do an echo with a random delay between each response. 2. Implement PullServerInterface. 3. Implement a client using PullServerInterface to establish an asynchronous call with an busy waiting. We can also provide a solution with passive waiting: Exercise 7 Repeat the previous exercise by adding to the interface DoSomethingResultInterface the following method: public void waitforresult() throws RemoteException; This method allows the client to avoid busy waiting: it blocks the client until the result is available. Implement this new version using the wait/notify couple to implement the blocking feature on the server. 5
6 2.3 Solution by callback (push) In some situations, the asynchronous aspect should be taken to the extreme in the sense that the time that can elapse between a method call and obtaining a response is not bounded. In fact, it is more a subscription mechanism then a call for a remote method. The typical used solution is the push: the client registers with the server and this latter calls the customer to inform him of the availability of the result. We can also imagine multiple results arriving sequentially. With RMI, a push mechanism is easy to implement. To do this, the client should create a server object (callback) that is transmitted (as remote reference) to the server when registering. When the server wishes to prevent the client, it calls a remote method of the callback object. Let us start with a simple implementation: Exercise 8 Consider the following remote interface: PushServerInterface public interface PushServerInterface extends Remote public void dosomething(string param, DoSomethingCallbackInterface callback) throws RemoteException; The dosomething method is asynchronous: it starts the server-side calculation and returns control as soon as possible. The remote reference DoSomethingCallbackInterface corresponds to an object created at the client-side that the server will use to inform the client of the calculation completion. The interface is very simple: DoSomethingCallbackInterface public interface DoSomethingCallbackInterface extends Remote public void reportcompletion(string result) throws RemoteException; 1. Implement PushServerInterface: the operation is a simple echo with random a delay response. 2. implement DoSomethingCallbackInterface with the simplest possible way, for example by making a display (on the client) using the reportcompletion method. 3. Implement a client to test the mechanism. We can settle for something very simple using the fact that JVM stops only if the proposed remote objects are not used (through the mechanism of distributed garbage collector). 4. Test the behavior of the server when the client ends without waiting for the completion of the call. What is wrong in the previous exercise is that no synchronization is implemented at the client-side. For something more realistic, it should be that the object implementing DoSomethingCallbackInterface get inspired by the mechanisms presented earlier to enable such synchronization: Exercise 9 Add to the implementation of DoSomethingCallbackInterface written in the previous exercise, methods inspired from exercises 6 and 7 allowing the client to wait actively and / or passively the server calls. Modify the test program to perform a demonstration of the new features. 6
INFO Ass 4. Exercise 1
Exercise 1 INFO 408 - Ass 4 public class UserInfo public static final long TIME_OUT = 1000 * 3000 ; public String user; public long id; public long creationdate; public UserInfo(String user,long id) this.user
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 informationJava Threads. Written by John Bell for CS 342, Spring 2018
Java Threads Written by John Bell for CS 342, Spring 2018 Based on chapter 9 of Learning Java, Fourth Edition by Niemeyer and Leuck, and other sources. Processes A process is an instance of a running program.
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 informationOS06: Monitors in Java
OS06: Monitors in Java Based on Chapter 4 of [Hai17] Jens Lechtenbörger Computer Structures and Operating Systems 2018 1 Introduction 1.1 OS Plan ˆ OS Motivation (Wk 23) ˆ OS Introduction (Wk 23) ˆ Interrupts
More informationThreads and Parallelism in Java
Threads and Parallelism in Java Java is one of the few main stream programming languages to explicitly provide for user-programmed parallelism in the form of threads. A Java programmer may organize a program
More informationInfo 408 Distributed Applications programming 2 nd semester of 2017/2018 Credits: 5 Lecturer: Dr. Antoun Yaacoub
Lebanese University Faculty of Sciences I Master 1 degree Computer Sciences Info 408 Distributed Applications programming 2 nd semester of 2017/2018 Credits: 5 Lecturer: Dr. Antoun Yaacoub 2 Multithreading
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 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 informationJava Threads. Introduction to Java Threads
Java Threads Resources Java Threads by Scott Oaks & Henry Wong (O Reilly) API docs http://download.oracle.com/javase/6/docs/api/ java.lang.thread, java.lang.runnable java.lang.object, java.util.concurrent
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 informationThreads Chate Patanothai
Threads Chate Patanothai Objectives Knowing thread: 3W1H Create separate threads Control the execution of a thread Communicate between threads Protect shared data C. Patanothai Threads 2 What are threads?
More informationMultiple Inheritance. Computer object can be viewed as
Multiple Inheritance We have seen that a class may be derived from a given parent class. It is sometimes useful to allow a class to be derived from more than one parent, inheriting members of all parents.
More informationIntroduction to Java Threads
Object-Oriented Programming Introduction to Java Threads RIT CS 1 "Concurrent" Execution Here s what could happen when you run this Java program and launch 3 instances on a single CPU architecture. 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 informationLecture 9: Introduction to Monitors
COMP 150-CCP Concurrent Programming Lecture 9: Introduction to Monitors Dr. Richard S. Hall rickhall@cs.tufts.edu Concurrent programming February 14, 2008 Abstracting Locking Details Recall our discussion
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 information7. MULTITHREDED PROGRAMMING
7. MULTITHREDED PROGRAMMING What is thread? A thread is a single sequential flow of control within a program. Thread is a path of the execution in a program. Muti-Threading: Executing more than one thread
More informationComponent-Based Software Engineering
Component-Based Software Engineering More stuff on Threads Paul Krause Lecture 7 - Contents Basics of threads and synchronization Waiting - releasing locks Collection Plate example Choices when pausing
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 informationConcurrent Programming
Concurrency Concurrent Programming A sequential program has a single thread of control. Its execution is called a process. A concurrent program has multiple threads of control. They may be executed as
More informationThreads Questions Important Questions
Threads Questions Important Questions https://dzone.com/articles/threads-top-80-interview https://www.journaldev.com/1162/java-multithreading-concurrency-interviewquestions-answers https://www.javatpoint.com/java-multithreading-interview-questions
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 informationProgrammazione Avanzata e Paradigmi Ingegneria e Scienze Informatiche - UNIBO a.a 2013/2014 Lecturer: Alessandro Ricci
v1.0 20130323 Programmazione Avanzata e Paradigmi Ingegneria e Scienze Informatiche - UNIBO a.a 2013/2014 Lecturer: Alessandro Ricci [module lab 2.1] CONCURRENT PROGRAMMING IN JAVA: INTRODUCTION 1 CONCURRENT
More informationProducing Production Quality Software. Lecture 12: Concurrent and Distributed Programming Prof. Arthur P. Goldberg Fall, 2004
Producing Production Quality Software Lecture 12: Concurrent and Distributed Programming Prof. Arthur P. Goldberg Fall, 2004 Topics Models of concurrency Concurrency in Java 2 Why Use Concurrency? Enable
More informationMultithreaded Programming
Multithreaded Programming Multithreaded programming basics Concurrency is the ability to run multiple parts of the program in parallel. In Concurrent programming, there are two units of execution: Processes
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 informationCS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [THREADS] Frequently asked questions from the previous class survey
CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [THREADS] Shrideep Pallickara Computer Science Colorado State University L6.1 Frequently asked questions from the previous class survey L6.2 SLIDES CREATED BY:
More informationJava s Implementation of Concurrency, and how to use it in our applications.
Java s Implementation of Concurrency, and how to use it in our applications. 1 An application running on a single CPU often appears to perform many tasks at the same time. For example, a streaming audio/video
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 informationpublic class Shared0 { private static int x = 0, y = 0;
A race condition occurs anytime that the execution of one thread interferes with the desired behavior of another thread. What is the expected postcondition for the following bump() method? What should
More informationInformatica 3. Marcello Restelli. Laurea in Ingegneria Informatica Politecnico di Milano 9/15/07 10/29/07
Informatica 3 Marcello Restelli 9/15/07 10/29/07 Laurea in Ingegneria Informatica Politecnico di Milano Structuring the Computation Control flow can be obtained through control structure at instruction
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 informationJava Threads and intrinsic locks
Java Threads and intrinsic locks 1. Java and OOP background fundamentals 1.1. Objects, methods and data One significant advantage of OOP (object oriented programming) is data encapsulation. Each object
More informationPerformance Throughput Utilization of system resources
Concurrency 1. Why concurrent programming?... 2 2. Evolution... 2 3. Definitions... 3 4. Concurrent languages... 5 5. Problems with concurrency... 6 6. Process Interactions... 7 7. Low-level Concurrency
More informationCMSC 433 Programming Language Technologies and Paradigms. Concurrency
CMSC 433 Programming Language Technologies and Paradigms Concurrency What is Concurrency? Simple definition Sequential programs have one thread of control Concurrent programs have many Concurrency vs.
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 informationContents. 6-1 Copyright (c) N. Afshartous
Contents 1. Classes and Objects 2. Inheritance 3. Interfaces 4. Exceptions and Error Handling 5. Intro to Concurrency 6. Concurrency in Java 7. Graphics and Animation 8. Applets 6-1 Copyright (c) 1999-2004
More informationUNIT V CONCURRENT PROGRAMMING
UNIT V CONCURRENT PROGRAMMING Multi-Threading: Java provides built-in support for multithreaded programming. A multithreaded program contains two or more parts that can run concurrently. Each part of such
More informationMultitasking. Multitasking allows several activities to occur concurrently on the computer Levels of multitasking: Process based multitasking
Java Thread Multitasking Multitasking allows several activities to occur concurrently on the computer Levels of multitasking: Process based multitasking Allows programs (processes) to run concurrently
More informationSynchronization. CS 475, Spring 2018 Concurrent & Distributed Systems
Synchronization CS 475, Spring 2018 Concurrent & Distributed Systems Review: Threads: Memory View code heap data files code heap data files stack stack stack stack m1 m1 a1 b1 m2 m2 a2 b2 m3 m3 a3 m4 m4
More informationObject Oriented Programming. Week 10 Part 1 Threads
Object Oriented Programming Week 10 Part 1 Threads Lecture Concurrency, Multitasking, Process and Threads Thread Priority and State Java Multithreading Extending the Thread Class Defining a Class that
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 informationCS193k, Stanford Handout #8. Threads 3
CS193k, Stanford Handout #8 Spring, 2000-01 Nick Parlante Threads 3 t.join() Wait for finish We block until the receiver thread exits its run(). Use this to wait for another thread to finish. The current
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 informationModule - 4 Multi-Threaded Programming
Terminologies Module - 4 Multi-Threaded Programming Process: A program under execution is called as process. Thread: A smallest component of a process that can be executed independently. OR A thread is
More informationCS455: Introduction to Distributed Systems [Spring 2019] Dept. Of Computer Science, Colorado State University
CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [THREADS] The House of Heap and Stacks Stacks clean up after themselves But over deep recursions they fret The cheerful heap has nary a care Harboring memory
More informationChapter 32 Multithreading and Parallel Programming
Chapter 32 Multithreading and Parallel Programming 1 Objectives To get an overview of multithreading ( 32.2). To develop task classes by implementing the Runnable interface ( 32.3). To create threads to
More informationCS211 Lecture: Concurrency, Threads; UML Activity Diagrams last revised October 11, 2007 Objectives
CS211 Lecture: Concurrency, Threads; UML Activity Diagrams last revised October 11, 2007 Objectives 1. To introduce the notion of concurrency 2. To introduce the Java threads facility 3. To introduce UML
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 informationConcurrency in Java Prof. Stephen A. Edwards
Concurrency in Java Prof. Stephen A. Edwards The Java Language Developed by James Gosling et al. at Sun Microsystems in the early 1990s Originally called Oak, first intended application was as an OS for
More informationContribution:javaMultithreading Multithreading Prof. Dr. Ralf Lämmel Universität Koblenz-Landau Software Languages Team
http://101companies.org/wiki/ Contribution:javaMultithreading Multithreading Prof. Dr. Ralf Lämmel Universität Koblenz-Landau Software Languages Team Non-101samples available here: https://github.com/101companies/101repo/tree/master/technologies/java_platform/samples/javathreadssamples
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 informationInterprocess Communication By: Kaushik Vaghani
Interprocess Communication By: Kaushik Vaghani Background Race Condition: A situation where several processes access and manipulate the same data concurrently and the outcome of execution depends on the
More informationSynchronized Methods of Old Versions of Java
Administrivia Assignment #4 is out Due Thursday April 8, 10:00pm no late assignments will be accepted Sign up in labs next week for a demo time In case you hadn t noticed Classes end Thursday April 15
More informationThreads and Java Memory Model
Threads and Java Memory Model Oleg Šelajev @shelajev oleg@zeroturnaround.com October 6, 2014 Agenda Threads Basic synchronization Java Memory Model Concurrency Concurrency - several computations are executing
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 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 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 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 informationThread Programming. Comp-303 : Programming Techniques Lecture 11. Alexandre Denault Computer Science McGill University Winter 2004
Thread Programming Comp-303 : Programming Techniques Lecture 11 Alexandre Denault Computer Science McGill University Winter 2004 February 16, 2004 Lecture 11 Comp 303 : Programming Techniques Page 1 Announcements
More informationAP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS
AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this
More informationAnimation Part 2: MoveableShape interface & Multithreading
Animation Part 2: MoveableShape interface & Multithreading MoveableShape Interface In the previous example, an image was drawn, then redrawn in another location Since the actions described above can apply
More informationMCS-378 Intraterm Exam 1 Serial #:
MCS-378 Intraterm Exam 1 Serial #: This exam is closed-book and mostly closed-notes. You may, however, use a single 8 1/2 by 11 sheet of paper with hand-written notes for reference. (Both sides of the
More informationCOMPSCI 230 Threading Week8. Figure 1 Thread status diagram [http://www.programcreek.com/2009/03/thread-status/]
COMPSCI 230 Threading Week8 Figure 1 Thread status diagram [http://www.programcreek.com/2009/03/thread-status/] Synchronization Lock DeadLock Why do we need Synchronization in Java? If your code is executing
More informationCMSC 433 Programming Language Technologies and Paradigms. Spring 2013
1 CMSC 433 Programming Language Technologies and Paradigms Spring 2013 Wait / Notify / NotifyAll Optimistic Retries Composition Follow-up (the risk I mentioned) ReentrantLock, Wait, Notify, NotifyAll Some
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 informationCS61B, Spring 2003 Discussion #17 Amir Kamil UC Berkeley 5/12/03
CS61B, Spring 2003 Discussion #17 Amir Kamil UC Berkeley 5/12/03 Topics: Threading, Synchronization 1 Threading Suppose we want to create an automated program that hacks into a server. Many encryption
More informationJAVA and J2EE UNIT - 4 Multithreaded Programming And Event Handling
JAVA and J2EE UNIT - 4 Multithreaded Programming And Event Handling Multithreaded Programming Topics Multi Threaded Programming What are threads? How to make the classes threadable; Extending threads;
More informationProgramming with the Service Control Engine Subscriber Application Programming Interface
CHAPTER 5 Programming with the Service Control Engine Subscriber Application Programming Interface Revised: July 28, 2009, Introduction This chapter provides a detailed description of the Application Programming
More informationHandouts. 1 Handout for today! Recap. Homework #2 feedback. Last Time. What did you think? HW3a: ThreadBank. Today. Small assignment.
Handouts CS193J: Programming in Java Summer Quarter 2003 Lecture 10 Thread Interruption, Cooperation (wait/notify), Swing Thread, Threading conclusions 1 Handout for today! #21: Threading 3 #22: HW3a:
More informationSynchronization in Concurrent Programming. Amit Gupta
Synchronization in Concurrent Programming Amit Gupta Announcements Project 1 grades are out on blackboard. Detailed Grade sheets to be distributed after class. Project 2 grades should be out by next Thursday.
More informationConcurrency COMS W4115. Prof. Stephen A. Edwards Spring 2002 Columbia University Department of Computer Science
Concurrency COMS W4115 Prof. Stephen A. Edwards Spring 2002 Columbia University Department of Computer Science Concurrency Multiple, simultaneous execution contexts. Want to walk and chew gum at the same
More informationImplementing Coroutines. Faking Coroutines in Java
Concurrency Coroutines Concurrency COMS W4115 Prof. Stephen A. Edwards Spring 2002 Columbia University Department of Computer Science Multiple, simultaneous execution contexts. Want to walk and chew gum
More informationThe Java Programming Language Basics. Identifiers, Keywords, and Types. Object-Oriented Programming. Objects and Classes. Exception Handling
Threads 13 Course Map This module covers multithreading, which allows a program to do multiple tasks at the same time. Getting Started The Java Programming Language Basics Identifiers, Keywords, and Types
More informationMultiThreading. Object Orientated Programming in Java. Benjamin Kenwright
MultiThreading Object Orientated Programming in Java Benjamin Kenwright Outline Review Essential Java Multithreading Examples Today s Practical Review/Discussion Question Does the following code compile?
More informationCS342: Software Design. November 21, 2017
CS342: Software Design November 21, 2017 Runnable interface: create threading object Thread is a flow of control within a program Thread vs. process All execution in Java is associated with a Thread object.
More informationName of subject: JAVA PROGRAMMING Subject code: Semester: V ASSIGNMENT 1
Name of subject: JAVA PROGRAMMING Subject code: 17515 Semester: V ASSIGNMENT 1 3 Marks Introduction to Java (16 Marks) 1. Write all primitive data types available in java with their storage size in bytes.
More information1 interface TemperatureSensor extends java.rmi.remote 2 { 3 public double gettemperature() throws java.rmi.remoteexception; 4 public void
1 interface TemperatureSensor extends java.rmi.remote 2 { 3 public double gettemperature() throws java.rmi.remoteexception; 4 public void addtemperaturelistener ( TemperatureListener listener ) 5 throws
More informationChapter 19 Multithreading
Chapter 19 Multithreading Prerequisites for Part VI Chapter 14 Applets, Images, and Audio Chapter 19 Multithreading Chapter 20 Internationalization 1 Objectives To understand the concept of multithreading
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 informationAdvanced Concepts of Programming
Berne University of Applied Sciences E. Benoist / E. Dubuis January 2005 1 Multithreading in Java Java provides the programmer with built-in threading capabilities The programmer can create and manipulate
More informationTwo Types of Semaphores
Two Types of Semaphores Counting semaphore integer value can range over an unrestricted domain. Binary semaphore integer value can range only between 0 and 1; can be simpler to implement. Can implement
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 informationShared-Memory and Multithread Programming
Shared-Memory and Multithread Programming Pruet Boonma pruet@eng.cmu.ac.th Department of Computer Engineering Faculty of Engineering, Chiang Mai University Based on a material by: Bryan Carpenter Pervasive
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 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 informationConcurrent, Real-Time and Distributed Programming in Java
Concurrent, Real-Time and Distributed Programming in Java FOCUS SERIES Jean-Charles Pomerol Concurrent, Real-Time and Distributed Programming in Java Threads, RTSJ and RMI Badr Benmammar First published
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 informationLecture 8: September 30
CMPSCI 377 Operating Systems Fall 2013 Lecture 8: September 30 Lecturer: Prashant Shenoy Scribe: Armand Halbert 8.1 Semaphores A semaphore is a more generalized form of a lock that can be used to regulate
More informationQuiz on Tuesday April 13. CS 361 Concurrent programming Drexel University Fall 2004 Lecture 4. Java facts and questions. Things to try in Java
CS 361 Concurrent programming Drexel University Fall 2004 Lecture 4 Bruce Char and Vera Zaychik. All rights reserved by the author. Permission is given to students enrolled in CS361 Fall 2004 to reproduce
More informationB2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA
B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA NOTE: 1. There are TWO PARTS in this Module/Paper. PART ONE contains FOUR questions and PART TWO contains FIVE questions. 2. PART ONE
More informationProgramming with the Service Control Engine Subscriber Application Programming Interface
CHAPTER 5 Programming with the Service Control Engine Subscriber Application Programming Interface Revised: November 20, 2012, Introduction This chapter provides a detailed description of the Application
More informationMonitors & Condition Synchronization
Feb. 15, 2012 Monitors & condition Synchronization Concepts: monitors: encapsulated data + access procedures mutual exclusion + condition synchronization single access procedure active in the monitor Models:
More informationDefinition: A thread is a single sequential flow of control within a program.
What Is a Thread? All programmers are familiar with writing sequential programs. You've probably written a program that displays "Hello World!" or sorts a list of names or computes a list of prime numbers.
More informationSynchronization COMPSCI 386
Synchronization COMPSCI 386 Obvious? // push an item onto the stack while (top == SIZE) ; stack[top++] = item; // pop an item off the stack while (top == 0) ; item = stack[top--]; PRODUCER CONSUMER Suppose
More informationExercise Session Week 8
Chair of Software Engineering Java and C# in Depth Carlo A. Furia, Marco Piccioni, Bertrand Meyer Exercise Session Week 8 Java 8 release date Was early September 2013 Currently moved to March 2014 http://openjdk.java.net/projects/jdk8/milestones
More informationReal-Time and Concurrent Programming Lecture 4 (F4): Monitors: synchronized, wait and notify
http://cs.lth.se/eda040 Real-Time and Concurrent Programming Lecture 4 (F4): Monitors: synchronized, wait and notify Klas Nilsson 2016-09-20 http://cs.lth.se/eda040 F4: Monitors: synchronized, wait and
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 information