package com.bjsxt.height.design014;
public class main
}
package com.bjsxt.height.design014;
public class futureclient
}).start();
system.out.println(thread.currentthread()+"直接返回了futuredata");
return futuredata; }
}
package com.bjsxt.height.design014;
public inte***ce data
package com.bjsxt.height.design014;
public class futuredata implements data
//如果沒裝載,進行裝載真實物件
this.realdata = realdata;
isready = true;
//進行通知
notify(); }
@override
public synchronized string getrequest() catch (interruptedexception e)
} //裝載好直接獲取資料即可
return this.realdata.getrequest();
}}
package com.bjsxt.height.design014;
public class realdata implements data catch (interruptedexception e)
system.out.println(thread.currentthread()+"操作完畢,獲取結果");
result = "查詢結果"; }
@override
public string getrequest()
}
thread[main,5,main]直接返回了futuredata
thread[thread-0,5,main]real 開啟子執行緒開始耗時
thread[main,5,main]請求傳送成功!
thread[main,5,main]做其他的事情...
thread[main,5,main]開始阻塞
thread[thread-0,5,main]根據請求引數進行查詢,這是乙個很耗時的操作..
thread[thread-0,5,main]操作完畢,獲取結果
thread[main,5,main]查詢結果
非同步與執行緒阻塞
返回目錄 非同步,早期開發人員對它有很多誤解,認為不阻塞主線程就是非同步,更有認為不阻塞ui就是非同步,但非同步歸根結底和這兩個東西關係並不大,非同步的出現主要是為了提高執行緒的利用率,讓可用執行緒更高,而不是乙個執行緒只做一件事,這件事沒有完成就不去做下面的事情,這是不正確的,執行緒應該被解放出來...
併發,同步,非同步,阻塞,非阻塞,執行緒
乙個cpu沒有真正意義的併發,兩個人同時做同樣的事情才是真正意義上的併發,只有統籌分時處理.多路同步 同步,實時處理並且活動按順序執行 非同步,乙個人合理的安排時間來做事情,分時處理,活動分段執行,非順序執行 阻塞模式,等,同步,併發,非同步都有可能會阻塞,只是機率的大小 非阻塞模式 不等 併發,併...
程序 執行緒 同步非同步 阻塞非阻塞
2015 08 19 15 23 38 週三 執行緒執行緒安全 如果你的 所在的程序中有多個執行緒在同時執行,而這些執行緒可能會同時執行這段 執行緒安全問題都是由全域性變數及靜態變數引起的 若每個執行緒中對全域性變數 靜態變數只有讀操作,而無寫操作,一般來說,這個全域性變數是執行緒安全的 若有多個執...