2012-11-26 14:06:35 -08:00
|
|
|
page.title=Sending Operations to Multiple Threads
|
2013-04-10 18:59:29 -07:00
|
|
|
page.tags="threadpool","runnable"
|
2012-11-26 14:06:35 -08:00
|
|
|
|
|
|
|
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>
|
|
|
|
|