Joe Malin | 8dd6275 | 2012-11-26 14:06:35 -0800 | [diff] [blame] | 1 | page.title=Sending Operations to Multiple Threads |
Joe Fernandez | 33baa5a | 2013-11-14 11:41:19 -0800 | [diff] [blame] | 2 | page.tags=threadpool,runnable |
Joe Malin | 8dd6275 | 2012-11-26 14:06:35 -0800 | [diff] [blame] | 3 | |
| 4 | trainingnavtop=true |
| 5 | startpage=true |
| 6 | |
| 7 | |
| 8 | @jd:body |
| 9 | |
| 10 | <div id="tb-wrapper"> |
| 11 | <div id="tb"> |
| 12 | |
| 13 | <!-- Required platform, tools, add-ons, devices, knowledge, etc. --> |
| 14 | <h2>Dependencies and prerequisites</h2> |
| 15 | <ul> |
| 16 | <li>Android 3.0 (API Level 11) or higher</li> |
| 17 | <li> |
| 18 | <a href="{@docRoot}training/load-data-background/index.html"> |
| 19 | Loading Data in the Background</a> training class |
| 20 | </li> |
| 21 | <li> |
| 22 | <a href="{@docRoot}training/run-background-service/index.html"> |
| 23 | Running in a Background Service</a> training class |
| 24 | </li> |
| 25 | </ul> |
| 26 | |
| 27 | <!-- related docs (NOT javadocs) --> |
| 28 | <h2>You should also read</h2> |
| 29 | <ul> |
| 30 | <li><a href="{@docRoot}guide/components/processes-and-threads.html">Processes and Threads</a></li> |
| 31 | </ul> |
| 32 | |
| 33 | <h2>Try it out</h2> |
| 34 | <div class="download-box"> |
| 35 | <a href="{@docRoot}shareables/training/ThreadSample.zip" class="button">Download the sample</a> |
| 36 | <p class="filename">ThreadSample.zip</p> |
| 37 | </div> |
| 38 | |
| 39 | </div> |
| 40 | </div> |
| 41 | <p> |
| 42 | The speed and efficiency of a long-running, data-intensive operation often improves when you |
| 43 | split it into smaller operations running on multiple threads. On a device that has a CPU with |
| 44 | multiple processors (cores), the system can run the threads in parallel, rather than making each |
| 45 | sub-operation wait for a chance to run. For example, decoding multiple image files in order to |
| 46 | display them on a thumbnail screen runs substantially faster when you do each decode on a |
| 47 | separate thread. |
| 48 | </p> |
| 49 | <p> |
| 50 | This class shows you how to set up and use multiple threads in an Android app, using a |
| 51 | thread pool object. You'll also learn how to define code to run on a thread and how to |
| 52 | communicate between one of these threads and the UI thread. |
| 53 | </p> |
| 54 | <h2>Lessons</h2> |
| 55 | <dl> |
| 56 | <dt> |
| 57 | <b><a href="define-runnable.html">Specifying the Code to Run on a Thread</a></b> |
| 58 | </dt> |
| 59 | <dd> |
| 60 | Learn how to write code to run on a separate {@link java.lang.Thread}, by |
| 61 | defining a class that implements the {@link java.lang.Runnable} interface. |
| 62 | </dd> |
| 63 | <dt> |
| 64 | <b><a href="create-threadpool.html">Creating a Manager for Multiple Threads</a></b> |
| 65 | </dt> |
| 66 | <dd> |
| 67 | Learn how to create an object that manages a pool of {@link java.lang.Thread} objects and |
| 68 | a queue of {@link java.lang.Runnable} objects. This object is called a |
| 69 | {@link java.util.concurrent.ThreadPoolExecutor}. |
| 70 | </dd> |
| 71 | <dt> |
| 72 | <b><a href="run-code.html">Running Code on a Thread Pool Thread</a></b> |
| 73 | </dt> |
| 74 | <dd> |
| 75 | Learn how to run a {@link java.lang.Runnable} on a thread from the thread pool. |
| 76 | </dd> |
| 77 | <dt> |
| 78 | <b><a href="communicate-ui.html">Communicating with the UI Thread</a></b> |
| 79 | </dt> |
| 80 | <dd> |
| 81 | Learn how to communicate from a thread in the thread pool to the UI thread. |
| 82 | </dd> |
| 83 | </dl> |
| 84 | |