Multi-threading in Java. Jeff HUANG
|
|
- Julianna Underwood
- 6 years ago
- Views:
Transcription
1 Multi-threading in Java Jeff HUANG Software Engineering
2 Do you use them? 2
3 Do u know their internals? 3
4 Let s see File DB How can they service so many clients simultaneously? l 4
5 Multi-threading A thread is a single sequential flow of control In a single process, there could be multiple threads Threads share memory The server program spawns multiple threads Each thread handles a client request 5
6 Example A single core CPU and a task compute readfile compute readfile compute writefile compute sec 2 such tasks 6
7 A simple accounting Single thread T=14 Two threads T=8 7
8 What s more Multi-core & multi-processor Dual-core AMD 32 processor 4096 processor Cray Athlon X2 Pentium Xeon X1 8
9 More accounting Number of cores = 1,000,000 = 1M 2M Multi-threading can do such tasks in 8 seconds! What about the single-threaded d version? 9
10 More benefits Performance User responsiveness Resource utilization Simplicity it of modeling Simplified handling of asynchronous events 10
11 Multi-threads are everywhere Server programs (web/database server) Client programs (Downloading tools/browser) Editors (Word/Photoshop/Adobe Reader) Search engine IDE (Matlab/Eclipse/Visual studio) JVM Swing and AWT 11
12 Where are we now? How to program? 12
13 Various ways of multithreading Thread Runnable Exectutor Framework Timer FutureTask 13
14 Thread Runnable Two major ways Exectutor Framework Timer FutureTask 14
15 Creating threads in Java Thread class public class Thread { public void run(){ ; Runnable interface public interface Runnable { public void run(); // work thread 15
16 Thread Class public class Thread extends Object implements Runnable { public Thread(); public Thread(String name); // Thread name public Thread(Runnable R); // Thread R.run() public Thread(Runnable R, String name); public void run(); // if no R, work for thread public void start(); // begin thread execution... 16
17 More Thread Class Methods public class Thread extends Object implements Runnable { public static Thread currentthread() public String getname() public void interrupt() public boolean isalive() public void join() public void setdaemon() public void setname() public void setpriority() public static void sleep() public static void yield() 17
18 1. Thread class Creating Threads in Java Extend Thread class and override the run method Example public class MyThread extends Thread { public void run() { // work for thread MyThread T = new MyThread () ; // create thread T.start(); // begin running thread // thread executing in parallel 18
19 Creating Threads in Java 2. Runnable interface Create object implementing Runnable interface Pass it to Thread object via Thread constructor Example public class MyRunnable implements Runnable { public void run() { // work for thread MyRunnable myr = new MyRunnable(); // create runnable object Thread T = new Thread(myR); // create thread T.start(); // begin running thread // thread executing in parallel 19
20 Producer - Consumer class Producer extends Thread class Consumer extends Thread { { private final public BlockingQueue static queue; void main private (String[] final BlockingQueue args) queue; Producer(BlockingQueue q){queue = q; Consumer(BlockingQueue q) { queue = q; public void { run() public void run() { { BlockingQueue q = new SomeQueue(); while(true) while(true) { Producer p = new Producer(q); { queue.put(produce()); consume(queue.take()); Consumer c = new Consumer(q); private Message p.start(); produce() private void consume(message mes) { { c.start(); return new Message(); Example 1 20
21 Simple WebServer public class MyRunnable implements Runnable { public void run() { handlerequest(connection); Process request public class SimpleWebServer { public static void main (String[] args) throws IOException { ServerSocket socket = new ServerSocket(80); while (true) { Accept client request final Socket connection = socket.accept(); kt t() Runnable task = new MyRunnable(connection); Create Thread t = new Thread(task); Create thread Runnable tstart(); t.start(); start t thread Example 2 21
22 Let s look a bit deeper Thread states Thread scheduler Difficulties li in Multithreaded lih d programming g 22
23 Thread States Java thread can be in one of these states New Runnable Running Blocked Dead thread allocated & waiting for start() thread can begin execution thread currently executing thread waiting for event (I/O, etc.) thread finished Transitions between states caused by Invoking methods in class Thread new(), start(), yield(), sleep(), wait(), notify() Other (external) events Scheduler, I/O, returning from run() 23
24 Thread States new new start runnable scheduler yield, time slice notify, notifyall, IO complete, sleep expired terminate running IO, sleep, wait, join blocked dead 24
25 Scheduler Thread Scheduling Determines which runnable threads to run Can be based on thread priority Part of OS or Java Virtual Machine (JVM) Scheduling policy Preempted by scheduler Non-preemptive (cooperative) scheduling Preemptive scheduling 25
26 Let s do a bit analysis Two threads A and B They both do the following work print 1, print 2, print 3 The main thread first starts A, then starts B main (): thread A, thread B thread A: println 1, println 2, println 3 thread B: println 1, println 2, println 3 26
27 Let s do a bit analysis Non-preemptive scheduler Preemptive scheduler Single-core 1, 2, 3, 1, 2, 3??? Multi-core?????? main (): thread A, thread B thread A: println 1, println 2, println 3 thread B: println 1, println 2, println 3 27
28 Java Thread Example public class ThreadExample extends Thread { public void run() { for (int i = 1; i <= 3; i++) System.out.println(i); try { sleep((int)(math.random() * 1000)); catch (InterruptedException e) { public static void main(string[] args) { Thread A = new ThreadExample(); Thread B = new ThreadExample(); A.start(); t() B.start(); System.out.println("Done"); 28
29 Java Thread Example Possible outputs 1,1,Done,2,2,3,3 1Done ,Done,1,2,2,3,3 1,1,Done,2,3,2,3 Done11 Done,1,1, ,2,3,3 Multi-threads can interleave their executions!!! 29
30 Another example public class Worker extends Thread { static int x = 0; public void run() { for (int i = 0; i < 1000; i++) { x=x+1; x Firstincreasexby1 increase x = x 1; Then decrease x by 1 public static void main (String[] args) { x = 0; for (int i = 0; i < 1000; i++) new Worker().start(); Start 1000 threads // wait for all threads exit System.out.println(x); 30
31 Data Race public class Worker extends Thread { static int x = 0; public void run() { for (int i = 0; i < 1000; i++) { x=x+1; x Firstincreasexby1 increase x = x 1; Then decrease x by 1 public static void main (String[] args) { x = 0; for (int i = 0; i < 1000; i++) new Worker().start(); Start 1000 threads // wait for all threads exit Xisnotalways0!! System.out.println(x); 31
32 Quiz time 32
33 Answer: Yes! 33
34 How Can This Happen? Compiler can reorder statements Or keep values in registers The Java memory model is designed to allow aggressive optimization On multi-processor, values not synchronized to global memory Good for performance 34
35 Observations Multithread execution is non-deterministic Depends on scheduler & single or multi-core Thread scheduling may cause data races Modifying same data from multiple threads Result depends on thread execution order Complier can reorder statements The memory model is designed to allow aggressive optimization 35
36 How to deal with it? We need protocol to make sure the shared data is manipulated safely We need to force the compiler to ensure that the modified shared data visible to other threads Synchronization Lock Semaphore Monitor Java synchronization 36
37 Java synchronization Java uses the concept of monitors Java uses the concept that every object is associated with a lock use synchronized keyword Two ways Synchronized methods Synchronized blocks 37
38 Synchronized method Calling a synchronized method attempts to possess the lock If no one owns the lock, then this thread has/owns the lock and proceeds. Otherwise, it has to wait until the lock is released by some other thread Lock For static method, it is the lock associated with the Class object to which the static method belongs to For instance method, it is the lock associated with the object on which h the method call is being made 38
39 Synchronized blocks Very similar to synchronized method, but it is Blocks of code, rather than entire methods public void somemethod() { // non-critical section synchronized(someobject) synchronized(this) { // critical section // non-critical section 39
40 Data Race public class Worker extends Thread { static int x = 0; public void run() { for (int i = 0; i < 1000; i++) { x=x+1; x Firstincreasexby1 increase x = x 1; Then decrease x by 1 public static void main (String[] args) { x = 0; for (int i = 0; i < 1000; i++) new Worker().start(); Start 1000 threads // wait for all threads exit Xisnotalways0!! System.out.println(x); 40
41 Using synchronization public class Worker extends Thread { static int x = 0; static Object lock = new Object(); public void run() { synchronized(lock) { for (int i = 0; i < 1000; i++) { x = x + 1; x = x 1; 41
42 Questions What would happen if the lock field were not static? Why don t we just make the run method synchronized? Why don t we just synchronize on x? 42
43 But, it is hard in practice Holding locks is a global property affects entire program, cannot be hidden behind an abstract interface Results in lack of modularity callers cannot ignore what locks their callees acquire or what locations they access necessary for race avoidance, but also for global l ordering to avoid deadlock part of a method s protocol which lock needs to be held when called, which locks it acquires 43
44 Bank Account Example class Account { Atomicity violation private int balance = 0; public void deposit(int n) { public read() { int r; synchronized(this) { r = balance; return r; int r = read(); other threads can update balance synchronized(this) { balance = r + n; Race-freedom is not sufficient 44
45 Optimized Bank Account public read() { return balance; class Account { private int balance = 0; public void deposit(int n) { synchronized(this) { int r = balance; balance = r + n; 45
46 Another Account Example class Account { private int balance = 0; public synchronized int withdraw(int amt){ public synchronized void deposit(int i) { class Client1 { public synchronized void move(account a1, Account a2) { a2.deposit(a1.withdraw( )); class Client2 // same as Client1 Client1: move(a1,a2); Client2: move(a2,a1); 46
47 Deadlock client1 holds lock for account a1, waits for account a2 client2 holds lock for account a2, waits for account a1 Both of them can not proceed Client1 Client2 a1 a2 47
48 Impair performance Frequent lock acquire and lock release operations We are sacrificing performance for data safety But sometimes there is no conflict On some extreme situations, performance is greatly impaired 48
49 Is it hard? 49
50 Let s make a conclusion Multithreading is quite useful But you need to be careful Bugs are everywhere 50
51 What we have learned Benefits of multithreads Performance User responsiveness How to make multithreaded Java programs Thread class/runnable interface Difficulties in Multithreading Statements reorder/data races/atomicity violation/deadlock Java synchronization Syncrhonized methods/blocks 51
52 Questions What would happen if the lock field were not static? Why don t we just make the run method synchronized? Why don t we just synchronize on x? 52
53 Using synchronization public class Worker extends Thread { static int x = 0; static Object lock = new Object(); public void run() { synchronized(lock) { for (int i = 0; i < 1000; i++) { x = x + 1; x = x 1; 53
54 See you next time
55 Backups
56 Daemon Threads Java threads types User Daemon Provide general services Typically never terminate Call setdaemon() before start() Program termination 1. All user threads finish 2. Daemon threads are terminated by JVM 3. Main program finishes 56
57 Atomicity violation 57
58 Thread flow graph 58
59 Non-preemptive Scheduling Threads continue execution until Thread terminates Executes instruction causing wait (e.g., IO) Thread volunteering to stop (invoking yield or sleep) 59
60 Preemptive Scheduling Threads continue execution until Same reasons as non-preemptive scheduling Preempted by scheduler 60
61 Transactional Memory Instead of using synchronizations, the runtime system ensures that the critical section executes transactionallyti You can just go ahead when entering a critical section; when you are exiting the critical section, the runtime system will check the data safety for you if there is no conflict, just proceed Otherwise, rollback The transaction memory system guarantees other threads cannot see intermediate values of the transaction (all-or-nothing) the transaction cannot see values of other transactions in the middle of its execution 61
62 Hardware & software TM Hardware transactional memory(htm) Software transactional memory (STM) 62
63 Advantages No deadlock! we never refer to locks explicitly Composability & modularity no need to know what callees do w.r.t. synchronization Performance could better in some situations 63
CMSC 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 informationComputation Abstractions. Processes vs. Threads. So, What Is a Thread? CMSC 433 Programming Language Technologies and Paradigms Spring 2007
CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Threads and Synchronization May 8, 2007 Computation Abstractions t1 t1 t4 t2 t1 t2 t5 t3 p1 p2 p3 p4 CPU 1 CPU 2 A computer Processes
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 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 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 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 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 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 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 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 informationOverview. Processes vs. Threads. Computation Abstractions. CMSC 433, Fall Michael Hicks 1
CMSC 433 Programming Language Technologies and Paradigms Spring 2003 Threads and Synchronization April 1, 2003 Overview What are threads? Thread scheduling, data races, and synchronization Thread mechanisms
More informationAdvanced Programming Methods. Lecture 6 - Concurrency in Java (1)
Advanced Programming Methods Lecture 6 - Concurrency in Java (1) Overview Introduction Java threads Java.util.concurrent References NOTE: The slides are based on the following free tutorials. You may want
More informationSynchronization in Java
Synchronization in Java Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park Synchronization Overview Unsufficient atomicity Data races Locks Deadlock Wait /
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 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 informationMultithread Computing
Multithread Computing About This Lecture Purpose To learn multithread programming in Java What You Will Learn ¾ Benefits of multithreading ¾ Class Thread and interface Runnable ¾ Thread methods and thread
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 informationMultithreaded Programming
core programming Multithreaded Programming 1 2001-2003 Marty Hall, Larry Brown http:// 2 Multithreaded Programming Agenda Why threads? Approaches for starting threads Separate class approach Callback approach
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 informationSoftware Practice 1 - Multithreading
Software Practice 1 - Multithreading What is the thread Life cycle of thread How to create thread Thread method Lab practice Prof. Joonwon Lee T.A. Jaehyun Song Jongseok Kim T.A. Sujin Oh Junseong Lee
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 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 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 informationUnit 4. Thread class & Runnable Interface. Inter Thread Communication
Unit 4 Thread class & Runnable Interface. Inter Thread Communication 1 Multithreaded Programming Java provides built-in support for multithreaded programming. A multithreaded program contains two or more
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 informationJAVA CONCURRENCY FRAMEWORK. Kaushik Kanetkar
JAVA CONCURRENCY FRAMEWORK Kaushik Kanetkar Old days One CPU, executing one single program at a time No overlap of work/processes Lots of slack time CPU not completely utilized What is Concurrency Concurrency
More informationReading from URL. Intent - open URL get an input stream on the connection, and read from the input stream.
Simple Networking Loading applets from the network. Applets are referenced in a HTML file. Java programs can use URLs to connect to and retrieve information over the network. Uniform Resource Locator (URL)
More informationMultithreading using Java. Dr. Ferdin Joe John Joseph
Multithreading using Java Dr. Ferdin Joe John Joseph 1 Agenda Introduction Thread Applications Defining Threads Java Threads and States Priorities Accessing Shared Resources Synchronisation Assignment
More informationUnit - IV Multi-Threading
Unit - IV Multi-Threading 1 Uni Processing In the early days of computer only one program will occupy the memory. The second program must be in waiting. The second program will be entered whenever first
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 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 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 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 informationMultithreaded Programming Part II. CSE 219 Stony Brook University, Department of Computer Science
Multithreaded Programming Part II CSE 219 Stony Brook University, Thread Scheduling In a Java application, main is a thread on its own Once multiple threads are made Runnable the thread scheduler of the
More informationThreads. Definitions. Process Creation. Process. Thread Example. Thread. From Volume II
Definitions A glossary Threads From Volume II Copyright 1998-2002 Delroy A. Brinkerhoff. All Rights Reserved. Threads Slide 1 of 30 PMultitasking: (concurrent ramming, multiramming) the illusion of running
More informationCS 556 Distributed Systems
CS 556 Distributed Systems Tutorial on 4 Oct 2002 Threads A thread is a lightweight process a single sequential flow of execution within a program Threads make possible the implementation of programs that
More informationProgramming Java. Multithreaded Programming
Programming Multithreaded Programming Incheon Paik 1 Contents An Overview of Threads Creating Threads Synchronization Deadlock Thread Communication 2 An Overview of Threads What is a Thread? A sequence
More informationContents. G53SRP: Java Threads. Definition. Why we need it. A Simple Embedded System. Why we need it. Java Threads 24/09/2009 G53SRP 1 ADC
Contents G53SRP: Java Threads Chris Greenhalgh School of Computer Science 1 Definition Motivations Threads Java threads Example embedded process Java Thread API & issues Exercises Book: Wellings 1.1 &
More informationBy: Abhishek Khare (SVIM - INDORE M.P)
By: Abhishek Khare (SVIM - INDORE M.P) MCA 405 Elective I (A) Java Programming & Technology UNIT-2 Interface,Multithreading,Exception Handling Interfaces : defining an interface, implementing & applying
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 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 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 informationTechniques of Java Programming: Concurrent Programming in Java
Techniques of Java Programming: Concurrent Programming in Java Manuel Oriol May 11, 2006 1 Introduction Threads are one of the fundamental structures in Java. They are used in a lot of applications as
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 informationUnit III Rupali Sherekar 2017
Unit III Exceptions An exception is an abnormal condition that arises in a code sequence at run time. In other words, an exception is a run-time error. In computer languages that do not support exception
More informationNetwork Programming COSC 1176/1179. Lecture 6 Concurrent Programming (2)
Network Programming COSC 1176/1179 Lecture 6 Concurrent Programming (2) Threads Recall from last week Every line of Java code is part of a thread There can be one or more threads running in parallel Each
More informationCS 2112 Lecture 20 Synchronization 5 April 2012 Lecturer: Andrew Myers
CS 2112 Lecture 20 Synchronization 5 April 2012 Lecturer: Andrew Myers 1 Critical sections and atomicity We have been seeing that sharing mutable objects between different threads is tricky We need some
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 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 informationSynchronization
Synchronization 10-28-2013 Synchronization Coming next: Multithreading in JavaFX (javafx.concurrent) Read: Java Tutorial on concurrency JavaFX Tutorial on concurrency Effective Java, Chapter 9 Project#1:
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 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 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 informationModel Requirements and JAVA Programs MVP 2 1
Model Requirements and JAVA Programs MVP 2 1 Traditional Software The Waterfall Model Problem Area Development Analysis REVIEWS Design Implementation Costly wrt time and money. Errors are found too late
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 informationNote: Each loop has 5 iterations in the ThreeLoopTest program.
Lecture 23 Multithreading Introduction Multithreading is the ability to do multiple things at once with in the same application. It provides finer granularity of concurrency. A thread sometimes called
More informationObject Oriented Programming (II-Year CSE II-Sem-R09)
(II-Year CSE II-Sem-R09) Unit-VI Prepared By: A.SHARATH KUMAR M.Tech Asst. Professor JAWAHARLAL NEHRU TECHNOLOGICAL UNIVERSITY, HYDERABAD. (Kukatpally, Hyderabad) Multithreading A thread is a single sequential
More informationProduced by. Design Patterns. MSc in Computer Science. Eamonn de Leastar
Design Patterns MSc in Computer Science Produced by Eamonn de Leastar (edeleastar@wit.ie)! Department of Computing, Maths & Physics Waterford Institute of Technology http://www.wit.ie http://elearning.wit.ie
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 informationConcurrency & Parallelism. Threads, Concurrency, and Parallelism. Multicore Processors 11/7/17
Concurrency & Parallelism So far, our programs have been sequential: they do one thing after another, one thing at a. Let s start writing programs that do more than one thing at at a. Threads, Concurrency,
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 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 informationUser Space Multithreading. Computer Science, University of Warwick
User Space Multithreading 1 Threads Thread short for thread of execution/control B efore create Global During create Global Data Data Executing Code Code Stack Stack Stack A fter create Global Data Executing
More informationCS 162 Operating Systems and Systems Programming Professor: Anthony D. Joseph Spring 2004
CS 162 Operating Systems and Systems Programming Professor: Anthony D. Joseph Spring 2004 Lecture 9: Readers-Writers and Language Support for Synchronization 9.1.2 Constraints 1. Readers can access database
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 informationUNIT IV MULTITHREADING AND GENERIC PROGRAMMING
UNIT IV MULTITHREADING AND GENERIC PROGRAMMING Differences between multithreading and multitasking, thread life cycle, creating threads, creating threads, synchronizing threads, Inter-thread communication,
More informationAmity School of Engineering
Amity School of Engineering B.Tech., CSE(5 th Semester) Java Programming Topic: Multithreading ANIL SAROLIYA 1 Multitasking and Multithreading Multitasking refers to a computer's ability to perform multiple
More informationCIS233J Java Programming II. Threads
CIS233J Java Programming II Threads Introduction The purpose of this document is to introduce the basic concepts about threads (also know as concurrency.) Definition of a Thread A thread is a single sequential
More informationThreads, Concurrency, and Parallelism
Threads, Concurrency, and Parallelism Lecture 24 CS2110 Spring 2017 Concurrency & Parallelism So far, our programs have been sequential: they do one thing after another, one thing at a time. Let s start
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 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 informationConcurrency & Synchronization. COMPSCI210 Recitation 25th Feb 2013 Vamsi Thummala Slides adapted from Landon Cox
Concurrency & Synchronization COMPSCI210 Recitation 25th Feb 2013 Vamsi Thummala Slides adapted from Landon Cox Midterm Review http://www.cs.duke.edu/~chase/cps11 0-archive/midterm-210-13s1.pdf Please
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 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 informationAdvanced Programming Concurrency
Advanced Programming Concurrency Concurrent Programming Until now, a program was a sequence of operations, executing one after another. In a concurrent program, several sequences of operations may execute
More informationReintroduction to Concurrency
Reintroduction to Concurrency The execution of a concurrent program consists of multiple processes active at the same time. 9/25/14 7 Dining philosophers problem Each philosopher spends some time thinking
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 informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Multithreading Multiprocessors Description Multiple processing units (multiprocessor) From single microprocessor to large compute clusters Can perform multiple
More informationSUMMARY INTRODUCTION CONCURRENT PROGRAMMING THREAD S BASICS. Introduction Thread basics. Thread states. Sequence diagrams
SUMMARY CONCURRENT PROGRAMMING THREAD S BASICS PROGRAMMAZIONE CONCORRENTE E DISTR. Introduction Thread basics Thread properties Thread states Thread interruption Sequence diagrams Università degli Studi
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 informationProgramming in Parallel COMP755
Programming in Parallel COMP755 All games have morals; and the game of Snakes and Ladders captures, as no other activity can hope to do, the eternal truth that for every ladder you hope to climb, a snake
More informationThreads(in Java) CSC J Paul Gibson, D311.
CSC 7203 J Paul Gibson, D311 paul.gibson@telecom-sudparis.eu http://www-public.it-sudparis.eu/~gibson/teaching/csc7203/ Threads(in Java) /~gibson/teaching/csc7203/csc7203-advancedoo-l6-threads.pdf 1 Processes
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 informationUnit 5 - Exception Handling & Multithreaded
Exceptions Handling An exception (or exceptional event) is a problem that arises during the execution of a program. When an Exception occurs the normal flow of the program is disrupted and the program/application
More informationThreads & Timers. CSE260, Computer Science B: Honors Stony Brook University
Threads & Timers CSE260, Computer Science B: Honors Stony Brook University http://www.cs.stonybrook.edu/~cse260 Multi-tasking When you re working, how many different applications do you have open at one
More informationSynchronization synchronization.
Unit 4 Synchronization of threads using Synchronized keyword and lock method- Thread pool and Executors framework, Futures and callable, Fork-Join in Java. Deadlock conditions 1 Synchronization When two
More informationProcess Characteristics. Threads Chapter 4. Process Characteristics. Multithreading vs. Single threading
Process Characteristics Threads Chapter 4 Reading: 4.1,4.4, 4.5 Unit of resource ownership - process is allocated: a virtual address space to hold the process image control of some resources (files, I/O
More informationThreads Chapter 4. Reading: 4.1,4.4, 4.5
Threads Chapter 4 Reading: 4.1,4.4, 4.5 1 Process Characteristics Unit of resource ownership - process is allocated: a virtual address space to hold the process image control of some resources (files,
More informationhttp://www.ugrad.cs.ubc.ca/~cs219/coursenotes/threads/intro.html http://download.oracle.com/docs/cd/e17409_01/javase/tutorial/essential/concurrency/index.html start() run() class SumThread extends
More informationAn Introduction to Programming with Java Threads Andrew Whitaker University of Washington 9/13/2006. Thread Creation
An Introduction to Programming with Java Threads Andrew Whitaker University of Washington 9/13/2006 This document provides a brief introduction to programming with threads in Java. I presume familiarity
More informationRobotics and Autonomous Systems
1 / 38 Robotics and Autonomous Systems Lecture 10: Threads and Multitasking Robots Simon Parsons Department of Computer Science University of Liverpool 2 / 38 Today Some more programming techniques that
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 informationCISC 4700 L01 Network & Client-Server Programming Spring Cowell Chapter 15: Writing Threaded Applications
CISC 4700 L01 Network & Client-Server Programming Spring 2016 Cowell Chapter 15: Writing Threaded Applications Idea: application does simultaneous activities. Example: web browsers download text and graphics
More informationChapter 8 Threads Zindell Technologies, Ltd. Question 1: Which one statement below is true concerning the following code?
1 Chapter 8 Threads Question 1: Which one statement below is true concerning the following code? 1. class Hevron extends java.util.vector implements Runnable 2. 3. public void run(int counter) 4. 3. System.out.println("in
More informationTHREADS AND MULTITASKING ROBOTS
ROBOTICS AND AUTONOMOUS SYSTEMS Simon Parsons Department of Computer Science University of Liverpool LECTURE 10 comp329-2013-parsons-lect10 2/37 Today Some more programming techniques that will be helpful
More informationROBOTICS AND AUTONOMOUS SYSTEMS
ROBOTICS AND AUTONOMOUS SYSTEMS Simon Parsons Department of Computer Science University of Liverpool LECTURE 10 THREADS AND MULTITASKING ROBOTS comp329-2013-parsons-lect10 2/37 Today Some more programming
More informationJAVA. Lab 12 & 13: Multithreading
JAVA Prof. Navrati Saxena TA: Rochak Sachan Lab 12 & 13: Multithreading Outline: 2 What is multithreaded programming? Thread model Synchronization Thread Class and Runnable Interface The Main Thread Creating
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 informationThreads in Java (Deitel & Deitel)
Threads in Java (Deitel & Deitel) OOutline 1 Introduction 1 Class Thread: An Overview of the Thread Methods 1 Thread States: Life Cycle of a Thread 1 Thread Priorities and Thread Scheduling 1 Thread Synchronization
More information