這篇文章將對Java非同步進行介紹,希望對大家有幫助。
非同步:非同步與同步相對,當一個非同步過程呼叫發出後,呼叫者在沒有得到結果之前,就可以繼續執行後續操作。
也就是說無論非同步方法執行程式碼需要多長時間,跟主執行緒沒有任何影響,主執行緒可以繼續向下執行。
例如:一條有分叉的水管,分叉口就是非同步調用入口。
A口為主線程,B口為輔助線程,當B口有東西塞住,不會影響A口通水。
定義回呼介面
非同步程式碼執行完後,結果往往需要一些做一些處理,
所以定義一個接口,用來處理非同步結果。
/** * 定义回调接口 * @author YZQ * */ public interface MyCallback { /** * 定义处理回调方法 * @param object */ void callback(Object object); }
定義非同步實作類別
/** * 异步任务类 * @author YZQ * */ public class AsynTask { /** * 处理任务 * @param myCallback 处理完任务后的回调 */ public void task(final MyCallback myCallback){ Thread thread=new Thread(new Runnable() { @Override public void run() { try { //线程睡眠3秒,模拟该线程执行时间过长,也就是上面说的【B口有东西塞住】 Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } //完成0到99的累加 int sum=0; for(int i=0;i<p><strong>#測試:</strong><br></p><pre class="brush:php;toolbar:false">/** * 测试类 * @author YZQ * */ public class Test { public static void main(String[] args) { //调用异步任务 new AsynTask().task(new MyCallback() { //实现回调方法 @Override public void callback(Object object) { System.out.println("异步回调处理:值 "+object); } }); System.out.println("主线程等待异步输出"); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } }
################################ ####可以看出:######主執行緒先輸出了【主執行緒等待非同步輸出】,###接著輔助執行緒輸出【非同步回呼處理:值4950】。 #########相關學習推薦:###java基礎教學#########
以上是java異步是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!