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>

