<?xml version="1.0" standalone="no" ?>

<!--  FAI_Java_MT.xml	Course Outline in XML format
 *
 * Copyright 2009 Affinity IT Training, LLC. All Rights Reserved.
 *
 -->

<!DOCTYPE FAI:CourseOutline SYSTEM "FAI_CourseOutline.dtd">

<?xml-stylesheet type="text/xsl" href="FAI_CourseOutline.xsl" ?>	

<FAI:CourseOutline FAI:link="FAI_Java_MT.xml"
     xmlns:FAI="http://www.fisher-assoc.com/DTDs/FAI_CourseOutline.dtd" >

  <FAI:CourseTitle FAI:level="Intermediate"  FAI:code="JavaMT">
    Java Multi-Threading
  </FAI:CourseTitle>  
  
  <FAI:CourseCategory>Java</FAI:CourseCategory>
  <FAI:CourseCategory>J2SE</FAI:CourseCategory>

  <FAI:SummaryInfo>

    <FAI:CourseDesc FAI:version="1.0" >
	An intense hands-on examination
	of Java Multi_Threading concepts, techniques, and pitfalls,
	including advanced Java 1.5+ components such as
	Locks, Atomic Classes, Thread Pools, Conditions, Barriers, and Concurrent Collections.
	Best Practices are explained and emphasized.
    </FAI:CourseDesc>

    <FAI:CourseDuration>
	1 Day
    </FAI:CourseDuration>

    <FAI:CourseAudience>
	Java developers seeking to learn more about 
	designing and implementing Multi-Threaded applications.
    </FAI:CourseAudience>

    <FAI:CourseObjectives>

      <FAI:Objective FAI:desc="Understand how to design Multi-Threaded applications in Java" />
      <FAI:Objective FAI:desc="Understand the proper use of synchronization, especially the concept of &quot;minimal synchronization&quot;" />
      <FAI:Objective FAI:desc="Be familiar with the Atomic Classes and how to use them" />
      <FAI:Objective FAI:desc="Understand the motivation for Locks and Conditions and how to use them" />
      <FAI:Objective FAI:desc="Understand the power and proper use of Thread Pools" />
      <FAI:Objective FAI:desc="Be familiar with techniques and Classes used to coordinate Thread activities" />
      <FAI:Objective FAI:desc="Understand Thread Priorities and Thread Groups" />
      <FAI:Objective FAI:desc="Be familiar with Best Practices to produce correct, efficient, maintainable, and cross-platform Multi-Threaded designs" />

    </FAI:CourseObjectives>

    <FAI:CourseSetupList>
          <FAI:Setup FAI:desc="Java 2 Standard Edition (J2SE) v1.5+"  FAI:link="http://www.java.sun.com/downloads" />
    </FAI:CourseSetupList>    

    <FAI:CourseTextList>

      <FAI:Text FAI:title="Course Workbook" />

    </FAI:CourseTextList>    

    <FAI:CoursePrerequisiteList>
      <FAI:CoursePrerequisite FAI:title="Java Fundamentals" 
			      FAI:link="FAI_IntroJava.xml" />
    </FAI:CoursePrerequisiteList>    

  </FAI:SummaryInfo>  

  <FAI:TopicList>

    <FAI:SuperTopic FAI:title="Introduction">
      <FAI:Topic FAI:title="Welcome" />
      <FAI:Topic FAI:title="Motivation" />
      <FAI:Topic FAI:title="Multi-Threading" />
      <FAI:Topic FAI:title="java.lang.Thread" />
      <FAI:Topic FAI:title="Using Threads: Two Approaches" />
      <FAI:Topic FAI:title="Example Program: Subclassing Thread" />
      <FAI:Topic FAI:title="Example Program: Runnable Target" />
      <FAI:Topic FAI:title="Multi-Threading and Thread Object" />
      <FAI:Topic FAI:title="Example Program: Stopping a Thread" />
      <FAI:Topic FAI:title="Lab Exercise: Delayed Hello" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Synchronization" >
      <FAI:Topic FAI:title="Motivation" />
      <FAI:Topic FAI:title="Example Program: Out Of Sync" />
      <FAI:Topic FAI:title="How Synchronization Works" />
      <FAI:Topic FAI:title="The &quot;synchronized&quot; Keyword" />
      <FAI:Topic FAI:title="Example Program: In Sync" />
      <FAI:Topic FAI:title="Synchronized Methods" />
      <FAI:Topic FAI:title="Synchronized Blocks" />
      <FAI:Topic FAI:title="Synchronized Static Methods" />
      <FAI:Topic FAI:title="Lock Classes" />
      <FAI:Topic FAI:title="Example Program: Locked In Sync" />
      <FAI:Topic FAI:title="Lab Exercise: Sort Of Threaded" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Atomic Classes" >
      <FAI:Topic FAI:title="Motivation" />
      <FAI:Topic FAI:title="The &quot;volatile&quot; Keyword" />
      <FAI:Topic FAI:title="Example Program: Experiencing Volatility" />
      <FAI:Topic FAI:title="Atomic Classes" />
      <FAI:Topic FAI:title="Example Program: Atomized" />
      <FAI:Topic FAI:title="Lab Exercise: Using Atomic Classes" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Coordinating Threads" >
      <FAI:Topic FAI:title="Motivation" />
      <FAI:Topic FAI:title="Thread States" />
      <FAI:Topic FAI:title="The join() Method" />
      <FAI:Topic FAI:title="Example Program: Join Together" />
      <FAI:Topic FAI:title="Thread Notification" />
      <FAI:Topic FAI:title="Example Program: Awaiting Your Call" />
      <FAI:Topic FAI:title="The Condition Interface" />
      <FAI:Topic FAI:title="Example Program: Conditionally Speaking" />
      <FAI:Topic FAI:title="The CyclicBarrier Class" />
      <FAI:Topic FAI:title="Example Program: Great Barrier" />
      <FAI:Topic FAI:title="The CountDownLatch Class" />
      <FAI:Topic FAI:title="Example Program: Blast Off" />
      <FAI:Topic FAI:title="The Exchanger Class" />
      <FAI:Topic FAI:title="Example Program: Play Ball" />
      <FAI:Topic FAI:title="The ReentrantReadWriteLock Class" />
      <FAI:Topic FAI:title="Example Program: Read Write Lock" />
      <FAI:Topic FAI:title="Lab Exercise: Coordinating Threads" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Thread Priorities, Pools, and Groups" >
      <FAI:Topic FAI:title="Motivation" />
      <FAI:Topic FAI:title="Thread Priorities" />
      <FAI:Topic FAI:title="Example Program: Thread Priorities" />
      <FAI:Topic FAI:title="Thread Pools" />
      <FAI:Topic FAI:title="The ThreadPoolExecutor Class" />
      <FAI:Topic FAI:title="Example Program: Into The Pool" />
      <FAI:Topic FAI:title="Choosing Queue Type and Size" />
      <FAI:Topic FAI:title="Callable Tasks and Future Results" />
      <FAI:Topic FAI:title="Rejected Tasks" />
      <FAI:Topic FAI:title="Canceling Tasks" />
      <FAI:Topic FAI:title="Example Program: Reject Pool" />
      <FAI:Topic FAI:title="Thread Groups" />
      <FAI:Topic FAI:title="Lab Exercise: XML Daemon" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Scheduling Tasks" >
      <FAI:Topic FAI:title="Motivation" />
      <FAI:Topic FAI:title="Timers and TimerTasks" />
      <FAI:Topic FAI:title="Example Program: Got The Time ?" />
      <FAI:Topic FAI:title="Canceling Tasks" />
      <FAI:Topic FAI:title="The ScheduledThreadPoolExecutor Class" />
      <FAI:Topic FAI:title="Example Program: Into The Pool" />
      <FAI:Topic FAI:title="Lab Exercise: Scheduled XML Daemon" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Collection Classes" >
      <FAI:Topic FAI:title="Collections and Thread-Safety" />
      <FAI:Topic FAI:title="java.util.concurrent.ConcurrentHashMap&lt;K,V&gt;" />
      <FAI:Topic FAI:title="Example Program: ConcurrentHashMap" />
      <FAI:Topic FAI:title="CopyOnWriteCollections" />
      <FAI:Topic FAI:title="ConcurrentLinkedQueue&lt;E&gt;" />
      <FAI:Topic FAI:title="ArrayBlockingQueue&lt;E&gt;" />
      <FAI:Topic FAI:title="Example Program: ArrayBlockingQueue" />
      <FAI:Topic FAI:title="SynchronousQueue&lt;E&gt;" />
      <FAI:Topic FAI:title="java.util.PriorityQueue&lt;E&gt;" />
      <FAI:Topic FAI:title="Example Program: Priority Queue" />
      <FAI:Topic FAI:title="java.util.concurrent.DelayQueue" />
      <FAI:Topic FAI:title="Example Program: DelayQueue" />
      <FAI:Topic FAI:title="Lab Exercise: Collections" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Best Practices" >
      <FAI:Topic FAI:title="Deadlock" />
      <FAI:Topic FAI:title="Thread Starvation" />
      <FAI:Topic FAI:title="Best Practices"/>
    </FAI:SuperTopic>

             
</FAI:TopicList>
 
</FAI:CourseOutline>

