android開發教程關於使用java concurrent處理併發需求
android開發教程之使用java concurrent處理併發需求
java5開始,增加了concurrent api,用於併發處理。比如起多個執行緒併發從網路上下載圖片,然後在本地顯示。
這裡寫個簡單的程式碼,來說明如何使用concurrent api提供的執行緒連線池。
執行結果類似這樣:
start do 1 task …
>>main thread end.
start do 2 task …
start do 1 finished.
start do 3 task …
start do 2 finished.
start do 3 finished.
複製程式碼
這裡的task1到task3,都做的同樣的事情,讓它所屬的執行緒休眠2000ms:
private static void doSomething(int id) {
System.out.println("start do " + id + " task …");
try {
Thread.sleep(1000 * 2);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("start do " + id + " finished.");
}
複製程式碼
如果沒有java自帶的這個api,需要自己或者使用不標準的第三方執行緒池api。用concurrent api寫起來很簡潔:
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(2);
executorService.submit(new Runnable() {
@Override
public void run() {
doSomething(1);
}
});
executorService.submit(new Runnable() {
@Override
public void run() {
doSomething(2);
}
});
executorService.submit(new Runnable() {
@Override
public void run() {
doSomething(3);
}
});
executorService.shutdown();
System.out.println(">>main thread end.");
}
複製程式碼
首先,建立了一個執行緒池,裡面有2個執行緒:
ExecutorService executorService = Executors.newFixedThreadPool(2);
複製程式碼
然後,通過submit()方法,提交一個Runnable的例項,這個例項將交由執行緒池中空閒的執行緒執行。
在main執行緒中直接運行了:
executorService.shutdown();
複製程式碼
不必擔心,執行緒池不會直接關閉的,只有當它執行完所有提交的任務後才會關閉。如果不寫這行,在本例中,應用將不會停止,因為雖然main執行緒(就是執行main方法的執行緒,也叫主執行緒)退出了,但是執行緒池中依然有執行緒執行,因此應用(程序)不會退出。
相關推薦
android開發教程關於使用java concurrent處理併發需求
android開發教程之使用java concurrent處理併發需求 java5開始,增加了concurrent api,用於併發處理。比如起多個執行緒併發從網路上下載圖片,然後在本地顯示。 這裡寫個簡單的程式碼,來說明如何使用concurrent api提供
微信公眾平臺開發教程Java版(六) 事件處理(選單點選/關注/取消關注)
前言: 事件處理是非常重要的,這一章講講常見的事件處理 1、關注/取消關注 2、選單點選 事件型別介紹: 在微信中有事件請求是訊息請求中的一種。請求型別為:event 而event事件型別又分多種事件型別,具體分關注:subscribe取消關注:unsubscribe自定義選單點選:CLICK 根
Android開發中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}
net 控件 view etc spi pos rst ack data Android開發中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullP
簡單的入門Android開發和Java語言基礎[圖]
span 如何 都是 android 類繼承 try alt 不依賴 throw 簡單的入門Android開發和Java語言基礎[圖]前言:去年年底到今年年初,我做過簡單的智能家居,也實現過一些簡單的直連和遠程的智能家居。於是就將最簡單的通信發布出來:智能家居簡單實現—使用
Android開發教程 - 使用Data Binding(一) 介紹
定義 rar 關註 klist amp 團隊 清晰 library 減少 引言 Data Binding(數據綁定)發布於2015年的Google I/O大會,旨在減少Android開發中的大量模板代碼(比如findViewById()),增加代碼及邏輯清晰度,提高開發效
Android開發教程 - 使用Data Binding(三)在Activity中的使用
text 開發 follow wrap app size 做的 三方 綁定 修改activity布局 如果使Activity支持Data Binding,在布局的最外層加入"<layout>"標簽即可,由於是加在最外層,所以即使重構現有工程,
Android開發教程 - 使用Data Binding(二)集成與配置
集成 我們 enabled 總結 code ref href 管理工具 amp 安裝依賴庫,配置工程 Data Binding安裝和配置都非常簡單,僅需簡單的兩步即可完成。 更新SDK 打開SDK管理工具,下載最新的Android Support庫。 配置工程的Gradle
Android開發教程 - 使用Data Binding(八)使用自定義Interface
extend 方便 獲取 ble main implement lec click 簡單 為什麽要使用自定義Interface 我們平常在Android的開發中,比如如果要設置一個View的點擊事件,通常通過view.setOnClickListener()來實現的,這
Android開發教程 - 使用Data Binding(七)使用BindingAdapter簡化圖
() quest 需要 binding animate 規則 直接 什麽 void 什麽是BindingAdapter BindingAdapter用來設置布局中View的自定義屬性,當使用該屬性時,可以自定義其行為。 下面是一個簡單的例子: @BindingAdapter
Android開發教程 - 使用Data Binding Android Studio不能正常生成相
比較 開發 刪除 使用 ali ida start 打開 不能 有時候新建布局文件時或者定義布局中的變量時,不能即時生成相關Binding類或方法(其實是不能正確索引),也許是IDE支持的一些BUG,不過Android Studio對Data Binding的支持問題也僅限
Android開發中自定義表情併發送出去之經典的傳送表情
本文例項講述了Android程式設計開發實現輸入(自定義表情包)QQ表情影象併發送出去別人收到並解析出來的方法。分享給大家供大家參考,原來QQ微信等傳送表情其實發送的都不是表情,而是一個富文字,收到訊息後再解析得來的,具體效果如下 : 表情傳送出去是這樣: 最近在
Android開發中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi
今天學習Android開發突然遇到了這個問題,查閱了很多資料,並且對集中原因進行了分析。 錯誤資訊字串:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.first/com.f
android開發教程之startActivityForResult使用方法
最近做的一個小東西遇到這樣的情況,我從一個頁面MainActivity修改一些內容,需要跳轉到一個新的EditActivity去做修改操作,修改完成後就回到之前的MainActivity,因為資訊被修改了,最好還是從伺服器上重新獲取一下,那麼就要在MainActivity裡
Handelr(二上)-- MarsChen Android 開發教程學習筆記
package com.shumin.lbs08;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.ActionBarActivity;impor
Android 開發,JAVA動態設定控制元件大小
在我們的實際android開發中,我們經常需要對控制元件進行設定。在xml中設計大小,我們大家都很熟悉。那麼,使用java動態設定控制元件大小,該如何寫呢。以下是我寫的方法: /** * 設定控制元件大小 * @param view 控制元件
Android開發中Java回撥機制的應用
用Java寫了這麼久的程式,一直沒有理解什麼是回撥,在最近的Android開發工作中,一個偶然的需求讓我突然就對Java中的回撥有了一個理解,遂記錄之。 首先這個需求是這樣的,一個Activity中的有一個View,我需要在不同的觸發條件下更換這個View的Lay
Android開發教程--設定ImageView圖片的顯示比例
為適應不同螢幕的手機,ImageView圖片的顯示比例,可以使用android:scaleType屬性來處理,處理方式的有以下幾種: 1、在xml配置中使用:android:scaleType="centerCrop" 2、在程式碼中使用: imageView.setS
【Android 開發教程】使用Intent傳送簡訊
本章節翻譯自《Beginning-Android-4-Application-Development》,如有翻譯不當的地方,敬請指出。使用SmsManager類,可以在自己編寫的程式內部發送簡訊,而不需要呼叫系統的簡訊應用。然而,有的時候呼叫系統內建的簡訊應用會更加方便。這時
【Android開發】圖形影象處理技術-實現Android動畫的兩種方式
在應用Android進行專案開發時,特別是在進行遊戲開發時,經常需要涉及動畫。Android中的動畫通常可以分為逐幀動畫(Frame Animation)和補間動畫(Tween Animation)兩種。下面將分別介紹這兩種動畫。 一.實現逐幀動畫(Frame Animat
微信公共號開發教程java版——微信網頁授權(八)
一:微信網頁授權介紹 關於網頁授權回撥域名的說明 1、在微信公眾號請求使用者網頁授權之前,開發者需要先到公眾平臺官網中的“開發 - 介面許可權 - 網頁服務 - 網頁帳號 - 網頁授權獲取使用者基本資訊”的配置選項中,修改授權回撥域名。請注意,這裡填