jagomart
digital resources
picture1_Java Concurrency In Practice Pdf 190782 | Lecture1 Handout


 182x       Filetype PDF       File size 0.26 MB       Source: www.cs.auckland.ac.nz


File: Java Concurrency In Practice Pdf 190782 | Lecture1 Handout
application level concurrency threads a rst introduction housekeeping assignment 4 available from friday may 20 submission due may 27 4pm looking into multi threading performance issues a small amount of ...

icon picture PDF Filetype PDF | Posted on 04 Feb 2023 | 2 years ago
Partial capture of text on file.
                   Application-level concurrency: Threads,
                 a first introduction
                 Housekeeping
                   Assignment 4
                   • Available from Friday May 20. Submission due May 27 4pm
                   • Looking into multi-threading performance issues. A small amount of cod-
                    ing.
                   Mydetails:
                 Lecturer Ralf Haeusler
                 Email rhae001@aucklanduni.ac.nz (include “COMPSCI230” in the subject)
                 Hours Tuesdays (May 16,23,30) after the lecture without appointment or prior
                    to lecturer with appointment.
                 Background Reading
                   The Java Tutorials (online):
                   • Concurrency: docs.oracle.com/javase/tutorial/essential/concurrency
                   • Concurrency in Swing: docs.oracle.com/javase/tutorial/uiswing/concurrency
                 Please read/work through both of these!
                   Books:
                   • Brian Goetz. Java concurrency in practice. Addison-Wesley (2008)
                   • Robert C. Martin. Clean code (Chapter 13). Prentice Hall (2009)
                   • Joshua Bloch. Effective Java. Addison-Wesley (2008)
                 For those interested in the details!
                 Problems addressed by app-level concurrency
                  1. Designing efficient applications
                     • E.g. using all available processing power on multi-core machines.
                     • Example: 3D rendering
                  2. Designing responsive applications
                     • Need applications that remain responsive even when a GUI event
                       handlerstartsalongcomputation(oranetwork/databaseoperation).
                                      1
               3. Designing programs that must simultaneously do several distinct logical
                 tasks
                  • Browsers must download many different page components in parallel
                  • Servers must service multiple clients simultaneously
              Concurrency with Threads
                In general, we consider:
                • Concurrency between processes (distinct programs inside the operating
                 system)
                • Concurrencybetweenthreads(“lightweightprocesses”insidethesame
                 program)
              Definition
              Athread is a single sequential flow of control within a program.
                • Until this point, we have acted as if there existed a single flow of execution
                 within a program.
                • This is rarely true! Modern programs often have many threads.
                • Particularly the case for OO (Java, .NET, Smalltalk) and GUI systems
                 (as we’ll find out)
              Threads
                • Left: A single thread running within a program.
                • Right: Two threads running within a program.
                               2
              Multiple threads within the same program
                How do multiple threads physically run in the same program/process?
                • On computers with several CPUs/cores (i.e. almost every computer that
                 you’didentifyasa“computer”),eachthreadcanrunonitsownCPU/core.
                          Core 1   Thread 1
                          Core 2   Thread 2
                • Threads can also run interleaved, even on a single CPU/core, where each
                 thread only has control periodically for a succession of time slices.
                    Th1  Th2 Th2 Th1  Th2 Th1
              Multiple threads within the same program
                • In general, the order and the size of the time slices is not predictable:
                 it is a dangerous mistake to assume anything less than total chaos!
                • The design and coding of multi-threaded programs must involve extra
                 steps to ensure proper coordination, if threads are not independent.
              Multiple threads within the same program
                Athread can temporarily cease its execution:
              Voluntarily : the thread itself issues sleep or yield commands in a fashion
                 known as cooperative scheduling. (Imagine cars giving way to one
                 another during highway merging.)
                  • “Selfish” threads are bad both for the system and, in the end, for
                   themselves.
              As enforced by the OS scheduler — on systems that support so-called pre-
                 emptive time slicing. (Imagine lane merging with traffic lights.)
              Using Threads in Java
                • Implement your own threads using the system Thread or Runnable
                 types.
                  – This is the most flexible option, but it is costly. Thread creation is a
                   costly operation, and even “waiting” threads take up some resources
                   despite doing nothing.
                • Use “thread pools” such as those provided by Executor or the Swing
                 GUI framework.
                • Implicitly, using specific APIs such as Timer.
                               3
                Java Threads and OS-supported Threads
                Warning
                The word “thread” is ambiguous!
                 • It may mean an object of type Thread: this is a Java data structure.
                    – One field in this structure is its run() method.
                 • It may also mean a locus of control in a computer system.
                    – Brian Goetz (Java Concurrency in Practice) calls this the “actual
                     thread”.
                    – Theoperatingsystemmayprovidedirectsupportformultiplethreads
                     per process.
                    – The JVM time-shares its OS-provided threads among its Thread ob-
                     jects. These objects can “come to life” only when they are paired up
                     with an OS-supported thread.
                Java Threads and OS-supported Threads
                By analogy:
                 • a Java thread object is like a boat captain,
                 • an OS-supported thread object is like a boat,
                 • in an OS-defined universe where,
                    – Captains are repeatedly shifted between boats,
                    – Captains pilot at most one boat at any given time, and
                    – Boats persist much longer than Captains.
                Custom Thread class
                public class SimpleThread extends Thread {
                  public SimpleThread(String name) {
                    super(name);
                  }
                  @Override
                  public void run() {
                    // ...
                  }
                }
                 • Subclass Thread and override its run method, so that it does something.
                 • The constructor sets the Thread’s name, which could be used later, e.g.
                  via getName().
                 • The overridden run method is the heart of any Thread—also known as
                  its Task.
                                   4
The words contained in this file might help you see if this file matches what you are looking for:

...Application level concurrency threads a rst introduction housekeeping assignment available from friday may submission due pm looking into multi threading performance issues small amount of cod ing mydetails lecturer ralf haeusler email rhae aucklanduni ac nz include compsci in the subject hours tuesdays after lecture without appointment or prior to with background reading java tutorials online docs oracle com javase tutorial essential swing uiswing please read work through both these books brian goetz practice addison wesley robert c martin clean code chapter prentice hall joshua bloch eective for those interested details problems addressed by app designing ecient applications e g using all processing power on core machines example d rendering responsive need that remain even when gui event handlerstartsalongcomputation oranetwork databaseoperation programs must simultaneously do several distinct logical tasks browsers download many dierent page components parallel servers service mult...

no reviews yet
Please Login to review.