Concurrent JAVA
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
4:29 AM
|
Labels:Bluetooth,Computer Peripherals
Learn JAVA Programming
|
This entry was posted on 4:29 AM
and is filed under
Learn JAVA Programming
.
You can follow any responses to this entry through
the RSS 2.0 feed.
You can leave a response,
or trackback from your own site.
0 comments:
Post a Comment