page.title=Sending Operations to Multiple Threads
page.tags="threadpool","runnable"

trainingnavtop=true
startpage=true


@jd:body

<div id="tb-wrapper">
<div id="tb">

<!-- Required platform, tools, add-ons, devices, knowledge, etc. -->
<h2>Dependencies and prerequisites</h2>
<ul>
    <li>Android 3.0 (API Level 11) or higher</li>
    <li>
        <a href="{@docRoot}training/load-data-background/index.html">
        Loading Data in the Background</a> training class
    </li>
    <li>
        <a href="{@docRoot}training/run-background-service/index.html">
        Running in a Background Service</a> training class
    </li>
</ul>

<!-- related docs (NOT javadocs) -->
<h2>You should also read</h2>
<ul>
  <li><a href="{@docRoot}guide/components/processes-and-threads.html">Processes and Threads</a></li>
</ul>

<h2>Try it out</h2>
<div class="download-box">
    <a href="{@docRoot}shareables/training/ThreadSample.zip" class="button">Download the sample</a>
    <p class="filename">ThreadSample.zip</p>
</div>

</div>
</div>
<p>
    The speed and efficiency of a long-running, data-intensive operation often improves when you
    split it into smaller operations running on multiple threads. On a device that has a CPU with
    multiple processors (cores), the system can run the threads in parallel, rather than making each
    sub-operation wait for a chance to run. For example, decoding multiple image files in order to
    display them on a thumbnail screen runs substantially faster when you do each decode on a
    separate thread.
</p>
<p>
    This class shows you how to set up and use multiple threads in an Android app, using a
    thread pool object. You'll also learn how to define code to run on a thread and how to
    communicate between one of these threads and the UI thread.
</p>
<h2>Lessons</h2>
<dl>
    <dt>
        <b><a href="define-runnable.html">Specifying the Code to Run on a Thread</a></b>
    </dt>
    <dd>
        Learn how to write code to run on a separate {@link java.lang.Thread}, by
        defining a class that implements the {@link java.lang.Runnable} interface.
    </dd>
    <dt>
        <b><a href="create-threadpool.html">Creating a Manager for Multiple Threads</a></b>
    </dt>
    <dd>
        Learn how to create an object that manages a pool of {@link java.lang.Thread} objects and
        a queue of {@link java.lang.Runnable} objects. This object is called a
        {@link java.util.concurrent.ThreadPoolExecutor}.
    </dd>
    <dt>
        <b><a href="run-code.html">Running Code on a Thread Pool Thread</a></b>
    </dt>
    <dd>
        Learn how to run a {@link java.lang.Runnable} on a thread from the thread pool.
    </dd>
    <dt>
        <b><a href="communicate-ui.html">Communicating with the UI Thread</a></b>
    </dt>
    <dd>
        Learn how to communicate from a thread in the thread pool to the UI thread.
    </dd>
</dl>

