<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                > 編寫:[AllenZheng1991](https://github.com/AllenZheng1991) - 原文:[http://developer.android.com/training/multiple-threads/define-runnable.html](http://developer.android.com/training/multiple-threads/define-runnable.html) 這一課向你展示了如何通過實現 [Runnable](http://developer.android.com/reference/java/lang/Runnable.html)接口得到一個能在重寫的[`Runnable.run()`](http://developer.android.com/reference/java/lang/Runnable.html)方法中執行一段代碼的單獨的線程。另外你可以傳遞一個[Runnable](http://developer.android.com/reference/java/lang/Runnable.html)對象到另一個對象,然后這個對象可以把它附加到一個線程,并執行它。一個或多個執行特定操作的[Runnable](http://developer.android.com/reference/java/lang/Runnable.html)對象有時也被稱為一個任務。 [Thread](http://developer.android.com/reference/java/lang/Runnable.html)和[Runnable](http://developer.android.com/reference/java/lang/Runnable.html)只是兩個基本的線程類,通過他們能發揮的作用有限,但是他們是強大的Android線程類的基礎類,例如Android中的[HandlerThread](http://developer.android.com/reference/android/os/HandlerThread.html), [AsyncTask](http://developer.android.com/reference/android/os/AsyncTask.html)和[IntentService](http://developer.android.com/reference/android/app/IntentService.html)都是以它們為基礎。[Thread](http://developer.android.com/reference/java/lang/Runnable.html)和[Runnable](http://developer.android.com/reference/java/lang/Runnable.html)同時也是[ThreadPoolExecutor](http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html)類的基礎。[ThreadPoolExecutor](http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html)類能自動管理線程和任務隊列,甚至可以并行執行多個線程。 ### 定義一個實現Runnable接口的類 直接了當的方法是通過實現[Runnable](http://developer.android.com/reference/java/lang/Runnable.html)接口去定義一個線程類。例如: ~~~ public class PhotoDecodeRunnable implements Runnable { ... @Override public void run() { /* * 把你想要在線程中執行的代碼寫在這里 */ ... } ... } ~~~ ### 實現run()方法 在一個類里,[`Runnable.run()`](http://developer.android.com/reference/java/lang/Runnable.html)包含執行了的代碼。通常在[Runnable](http://developer.android.com/reference/java/lang/Runnable.html)中執行任何操作都是可以的,但需要記住的是,因為[Runnable](http://developer.android.com/reference/java/lang/Runnable.html)不會在UI線程中運行,所以它不能直接更新UI對象,例如[View](http://developer.android.com/reference/android/view/View.html)對象。為了與UI對象進行通信,你必須使用另一項技術,在[與UI線程進行通信](#)這一課中我們會對其進行描述。 在[Runnable.run()](http://developer.android.com/reference/java/lang/Runnable.html#run())方法的開始的地方通過調用參數為[THREAD_PRIORITY_BACKGROUND](http://developer.android.com/reference/android/os/Process.html#THREAD_PRIORITY_BACKGROUND")的[Process.setThreadPriority()](http://developer.android.com/reference/android/os/Process.html#setThreadPriority(int))方法來設置線程使用的是后臺運行優先級。這個方法減少了通過[Runnable](http://developer.android.com/reference/java/lang/Runnable.html)創建的線程和和UI線程之間的資源競爭。 **你還應該通過在Runnable自身中調用[Thread.currentThread()](http://developer.android.com/reference/java/lang/Thread.html#currentThread())來存儲一個引用到Runnable對象的線程。** 下面這段代碼展示了如何創建run()方法: ~~~ class PhotoDecodeRunnable implements Runnable { ... /* * 定義要在這個任務中執行的代碼 */ @Override public void run() { // 把當前的線程變成后臺執行的線程 android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND); ... /* * 在PhotoTask實例中存儲當前線程,以至于這個實例能中斷這個線程 */ mPhotoTask.setImageDecodeThread(Thread.currentThread()); ... } ... } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看