java多執行緒結合單例模式例項,簡單實用易理解
最近接觸到多執行緒,為了弄清原理,寫了以下程式碼:
新建以下類:
/**
* 多執行緒執行順序測試
*
*/
public class ThreadTest {
public static void main(String[]args) throws InterruptedException{
for(int i = 0;i<1;i++){
// if(i==0){
new DataDeal().dealData(String.valueOf(i));
// }
System.out.println("主執行緒:i="+i);
System.out.println("主執行緒顯示子執行緒此時的資料是:子執行緒"+DataDeal.threadNumOfDataDeal+DataDeal.sonR);
//Thread.sleep(1000);
}
for(int j=0;j<20;j++){
Thread.sleep(2000);
//System.out.println("主執行緒顯示子執行緒此時的資料是..:子執行緒"+DataDeal.threadNumOfDataDeal+DataDeal.sonR);
System.out.println("主執行緒顯示子執行緒此時的資料是..:子執行緒"+DataDeal.threadNumOfDataDeal+Result.getInstance().getSonThreadr());
//判斷子執行緒執行狀態,“0”表示子執行緒執行結束,如果子執行緒執行結束,則主執行緒跳出迴圈顯示,也結束
if(Result.getInstance().getSonTheadState().equals("0")){
break;
}
}
System.out.println("主執行緒執行完畢");
}
}
public class DataDeal {
public static String sonR;
public static String threadNumOfDataDeal;
private String threadNum2;
public void dealData(String threadNum){
threadNumOfDataDeal = threadNum;
this.threadNum2 = threadNum;
new Thread(new Runnable(){
public void run(){
Result.getInstance().setSonTheadState("1");//將子執行緒執行狀態設為“1”,表示子執行緒啟動
try {
for(int i = 0;i<5;i++){
for(int j = 0;j<5;j++){
Thread.sleep(1000);
sonR = "["+i+"]["+j+"]";
Result.getInstance().setSonThreadr("["+i+"]["+j+"]");
//System.out.println("子執行緒"+threadNum2+"。。。。。。"+sonR);
}
}
System.out.println("子執行緒"+threadNum2+"執行完畢");
Result.getInstance().setSonTheadState("0");//將子執行緒執行狀態設為“0”,表示子執行緒執行結束
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("子執行緒異常");
Result.getInstance().setSonTheadState("0");//將子執行緒執行狀態設為“0”,表示子執行緒執行結束
}
}
}).start();
}
}
public class Result {
private String sonThreadr;//子執行緒執行時資料
private String sonTheadState;//子執行緒執行狀態:0執行結束;1正在執行
//採用單例模式
private Result(){}
private static Result r;
public static Result getInstance(){
if(r == null)
r = new Result();
return r;
}
public String getSonTheadState() {
return sonTheadState;
}
public void setSonTheadState(String sonTheadState) {
this.sonTheadState = sonTheadState;
}
public String getSonThreadr() {
return sonThreadr;
}
public void setSonThreadr(String sonThreadr) {
this.sonThreadr = sonThreadr;
}
}
相關文章
- JAVA_多執行緒_單例模式Java執行緒單例模式
- java多執行緒例項Java執行緒
- .Net結合PInvoke超簡單實現程式單一例項執行
- linux執行緒池簡單例項Linux執行緒單例
- 多執行緒併發鎖分類以及簡單例項執行緒單例
- Java多執行緒程式設計筆記10:單例模式Java執行緒程式設計筆記單例模式
- 執行緒安全的單例模式執行緒單例模式
- 多執行緒下的單例執行緒單例
- 策略模式與簡單java例項模式Java
- 設計模式-單例模式之餓漢式-多執行緒設計模式單例執行緒
- 設計模式-單例模式之懶漢式-多執行緒設計模式單例執行緒
- ios-UI高階多執行緒 GCD實現單例模式iOSUI執行緒GC單例模式
- 單例模式——執行緒安全的兩種實現單例模式執行緒
- 設計模式之單例模式(執行緒安全)設計模式單例執行緒
- C++ 執行緒安全的單例模式C++執行緒單例模式
- 單例模式執行緒安全reorder問題單例模式執行緒
- java 使用執行緒做一個簡單的ATM存取款例項.Java執行緒
- C#實現單例項執行C#單例
- 單例模式(含執行緒鎖關鍵字)單例模式執行緒
- MySQL 5.5升級5.6 單例項簡易實戰MySql單例
- 執行緒和執行緒池的理解與java簡單例子執行緒Java單例
- 【設計模式】實現執行緒安全單例模式的五種方式設計模式執行緒單例
- Java多執行緒就是這麼簡單Java執行緒
- PHP單例模式理解PHP單例模式
- PHP 單例模式理解PHP單例模式
- 如何理解單例模式?單例模式
- 單例模式,真不簡單單例模式
- 簡單的單例模式其實也不簡單單例模式
- Java多執行緒/併發05、synchronized應用例項:執行緒間操作共享資料Java執行緒synchronized
- Android探索之旅 | 用AsyncTask實現多執行緒+例項Android執行緒
- java 單例模式Java單例模式
- Java單例模式Java單例模式
- ios中的執行緒安全單例實現iOS執行緒單例
- Java多執行緒2:Thread中的例項方法Java執行緒thread
- Unity3d遊戲開發之-單例設計模式-單例模式二:多執行緒二(雙重鎖定)Unity3D遊戲開發單例設計模式執行緒
- 單節點執行ASM例項ASM
- 【odoo】【知識雜談】單一例項多庫模式下定時任務執行緒崩了Odoo模式執行緒
- JavaScript單例模式概念與例項JavaScript單例模式