concurrency
Post on 30-Dec-2015
23 Views
Preview:
DESCRIPTION
TRANSCRIPT
Threads in Java 1
Concurrency
Synchronizing threads, thread pools, etc.
Benefits of threadsMore CPU’s
• Many modern computers has more than one CPU– Dual Core
• By dividing the program into more threads the program can utilize the CPU’s– The program will run faster
Threads in Java 2
Benefits of threadsThreads waiting
• A thread may be waiting for something to happen– File to be read– Incoming network requests– Sleep()– Wait()
• While one thread is waiting other threads should use the CPU– The program will run faster
• Figure from – http://jayford040.blogspot.com/
2009/07/process-concept-operating-system.html
Threads in Java 3
Threads in Java 4
Creating threads
Class A extends Thread { public void run() { … }}
A a = new A();a.start();
• A may not extend other classes.
Class B implements Runnable { public void run() { … }}
B b = new B();Tread t = new Thread(b);t.start();
• B may extend another class.• Decouples task submission from thread scheduling, etc.
Threads in Java 5
Joining treads
• Some methods on the class Thread– Start()
• Starts the thread
– Join() • waits for the thread to die
Runnable printerA = new Printer("Anders", 10);
Thread threadA = new Thread(printerA);
threadA.start();
// threadA.join();
System.out.println( "Main is done");
Threads in Java 6
Synchronizing threads
• Having threads in a programming language is a nice feature, but threads must to be controlled.– If you have 2 or more threads with reference
to the same object, the threads might execute methods on that object simultaneously. • This must be controlled
Threads in Java 7
Race conditions and critical sections
• Race condition– 2 or more threads are reading or writing shared data
and the final result depends on the timing of the thread scheduling.
– Race conditions are generally a bad thing!• Critical section
– Part of a program (whole method or just a part of a method) where race conditions might happen.
– To avoid race conditions• We want to make sure that at most one thread executes the
critical section at any point in time.• Threads must be synchronized.
Threads in Java 8
References
• Sun Microsystems The Java Tutorial, Threads– http://java.sun.com/docs/books/tutorial/essential/threads/index.ht
ml
• Sun Microsystems Java 2 Platform Standard Edition 5.0 API Specification: java.util.concurrent– http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/packa
ge-summary.html
Threads in Java 9
More references• Brian Goetz et al Java
Concurrency in Practice, Addison Wesley 2006 http://javaconcurrencyinpractice.com
• Doug Lea Concurrent Programming in Java 2nd edition, Addison Wesley 2000
• Oaks & Wong Java Threads, O’Reilly 2004
• Niemeyer & Knudsen Learning Java, 3rd edition, O’Reilly 2005– 9. Threads, page 249-297
top related