Angelika Langer - Training & Consulting

 
HOME | SEMINARS | TALKS | ARTICLES | BOOKS | LINKS | IOSTREAMS | GENERICS | ABOUT | NEWSLETTER | CONTACT | SITEMAP
Concurrent Java

Course Curriculum Angelika LangerCourse Curriculum Angelika Langer  
HOME

SEMINARS
  GENERAL INFO
  SCHEDULE
  REGISTRATION
  
  JAVA
    EFFECTIVE JAVA
    CONCURRENCY
    PERFORMANCE
    JAVA 5.0 
    GENERICS
    JAVA 1.3 => 6.0
    JAVA FOR C++
    JAVA INTRO

  C++
    RELIABLE C++
    EFFECTIVE STL
    TEMPLATES
    EXCEPTIONS
    IOSTREAMS
    C++ FOR C
    C++ FOR JAVA
    C++ INTRO   
 

TALKS
ARTICLES 
BOOKS 
LINKS 
IOSTREAMS 
GENERICS 
ABOUT 
NEWSLETTER 
CONTACT 
SITEMAP 
Concurrent Java
COURSE DESCRIPTION

" Writing correct programs is hard; writing correct concurrent programs is harder.  There are simply more things that can go wrong in a concurrent program than in a sequential one. "  (Brian Goetz)

Java supports concurrent programming with multiple threads directly by means of built-in language features.  This is one of the many reasons why  Java programmers need to grasp the essence of concurrent programming. 

Threads can simplify the development of complex systems by breaking down one complex activity into several smaller concurrent activities.  It is often more desirable to write several tasks that each perform a single activities and coordinate them rather than to write a single task that performs all theactivities.

Threads are the easiest way to exploit the computing power of multiprocessor systems.  With the increasing availability of multicore processors a growing number of programs need to avoid sequential execution and seek parallelism by means of multiple threads. 

In the IT industry we observe a trend to asynchronous and parallel computing that aims to increase throughput and  scalability. Modern software architectures circle around asynchrony:  NIO with its asynchronous non-blocking i/o, JMS (Java messaging system), message-driven beans in EJB, MOM (message oriented middleware), AJAX (asynchronous JavaScript and XML), SOA (service oriented architecture), just to name a few.

In essence, Java programmers are or will shortly be confronted with concurrent programming and all its issues of thread safety, synchronization, dead locks, thread control, task scheduling, etc.  Even advanced issues such as JMM, the Java Memory Model, grow in relevance as more and more programs run on multicore architectures where sophisticated caching strategies on the processor level are likely to reveal yet undetected bugs related to visibility of memory accesses and re-ordering of actions in general.

This seminar aims to give a sound and comprehensive introduction into concurrent programming in Java, exposes students to programming techniques and idioms that have been proven useful in practice, and alerts them to commonly known pitfalls.


 

Prerequisite Courses 
and Skills:
Basic knowledge of Java (introductory course or equivalent practical experience). 
Duration: 4 days

This is a course for Java programmers who intend to build applications that are executed concurrently in multiple threads.

The seminar is equally relevant to programmers who do not actively create threads, but have to prepare their classes for use in multi-threaded environments. 
 

OBJECTIVES
Understand concurrency control issues in general
Know the instruments available in Java
Avoid common errors and pitfalls
Understand concurrency control idioms

The course is designed by Klaus Kreft & Angelika Langer and backed by years of experience in teaching and more than a decade of practical experience in industrial software development both in C++ and Java.

Angelika Langer is a freelance trainer/mentor in the area of object-oriented software development in C++ and Java. 

Klaus Kreft is a senior consultant for more than 20 years and has served as the lead architect on several successful industry projects. He has been working in C++ for many year and works in Java since 1995. 

Both are recognized speakers at OO oonference and author of numerous articles on C++ and Java topics in various computer magazines worldwide. Together they write a column for the German Java magazine JavaSpektrum and are authors of the  book "Standard C++ IOStreams and Locales" and the Online FAQ on Java Generics.. 


 

COURSE OVERVIEW

Multi-Threading Basics
  • Synchronization Basics
  • Thread Safety
  • Thread Creation
Concurrency Control
  • Synchronization & Design 
  • Implicit and Explicit Locks
  • State-Dependent Operations
  • Read-Write-Locks
  • Synchronizers 
  • Blocking Queues
  • Synchronized vs. Concurrent Collections
  • Thread-Local Memory
  • Atomic Variables
Thread and Task Control
  • Multithreading & Design
  • Thread States, Scheduling, Groups, Priorities
  • Thread Completion
  • Thread Interruption
  • Threads And Exceptions
  • Thread Pool Basics
  • Task Execution
  • Schedules Tasks
  • Thread Pool Configuration
  • Fork-Join-Framework
Advanced Topics
  • JMM - Java Memory Model 
  • Double Checked Locking
  • Details of Atomic Variables
  • Lock-Free Programming
FURTHER READING

 
To get an impression of some of the topics covered in this course check out the sample reading: 
 
 
EFFECTIVE JAVA
Column in JavaMagazin 
(available in German only)

 
 

 
 
TRAINING LOCATIONS

Open Enrollment
Public courses are conducted in collaboration with partner companies worldwide. Presentation language is English or German, depending on the location. For further information go to GENERAL INFO.
On-Site Training
Courses can be held at your company site. Duration and content will be tailored to your specific needs and prerequisites. Presentation language is English or German.  For further information go to GENERAL INFO.
For information regarding training locations and the current schedule of public courses go to SCHEDULE. For further information or enrollment send me EMAIL or use the REGISTRATION form.
Schedule
To check for availability, price and other details send me EMAIL or use the REGISTRATION form.

 
© Copyright 1995-2008 by Angelika Langer.  All Rights Reserved.    URL: < http://www.AngelikaLanger.com/Courses/ConcurrentJava.htm  last update: 5 May 2008