編輯:Android開發教程
一、如果是每個線程都執行相同的代碼,則可以使用同一個Runnable來實現共享
public class MultiThreadShareData {
public static void main(String[] args) {
new Thread(new ShareData()).start();
new Thread(new ShareData()).start();
}
static class ShareData implements Runnable{
private int j = 100;
@Override
public synchronized void run() {
j--;
}
}
}
上面代碼中兩個線程共享數據實現對j變量的遞減操作,至於上面代碼中為什麼要使用一個靜態內部類,該類static的作用是不依賴外部類的實例創建對象。
二、如果每個線程執行的代碼不同,則需要使用不同的Runnable對象來實現共享
public class MultiThreadShareData {
public static void main(String[] args) {
final ShareData data1 = new ShareData();
//啟動第一個線程
new Thread(new Runnable() {
@Override
public void run() {
data1.increment(); //加
}
}).start();
//啟動第二個線程
new Thread(new Runnable() {
@Override
public void run() {
data1.decrement(); //減
}
}).start();
}
static class ShareData{
private int j = 0;
public synchronized void increment(){
j++;
}
public synchronized void decrement(){
j--;
}
}
}
將上面代碼進修改(將數據作為外部類的成員變量,讓Runnable接口操作該成員變量)如下:
public class MultiThreadShareData {
public static void main(String[] args) {
ShareData data1 = new ShareData();
new Thread(new MyRunnable1(data1)).start();
new Thread(new MyRunnable2(data1)).start();
}
static class MyRunnable1 implements Runnable{
private ShareData data1;
public MyRunnable1(ShareData data1){
this.data1 = data1;
}
@Override
public void run() {
data1.increment();
}
}
static class MyRunnable2 implements Runnable{
private ShareData data1;
public MyRunnable2(ShareData data2){
this.data1 = data1;
}
@Override
public void run() {
data1.decrement();
}
}
static class ShareData{
private int j = 0;
public synchronized void increment(){
j++;
}
public synchronized void decrement(){
j--;
}
}
}
 
Android ApiDemos示例解析(5) App->Activity->Custom Title
Android UI缺省的標題欄由android:label 定義,顯示在屏幕左上角,Android允許Activity自定義標題欄,使用自定義 Layout重新設置標題
15 個 Android 通用風行框架大全
15 個 Android 通用流行框架大全 1. 緩存 DiskLruCache Java實現基於LRU的磁盤緩存 2.圖片加載 An
Android RoboGuice使用指南(15) Inject Context
在Android應用程序中,很多地方需要引用到Context對象(Activity, Application,Service等)。Roboguice 使得引用Contex
Android基於Openfire開發即時通訊工具(2)登錄openfire
上節openfire服務器已經搭建完成,這節看看,怎麼使用smack基於xmpp協議登錄openfire服務器,在服務器中創建好測試的賬號下面看android客戶端的代碼